Menoken Rentetan C dengan strtok()
Untuk menandakan rentetan menggunakan strtok() dengan std::string, seseorang mesti menukar ia menjadi rentetan gaya C (char). Walau bagaimanapun, menukar secara langsung std::string kepada const char menggunakan str.c_str() boleh membawa kepada ralat.
Penyelesaian 1: Menggunakan istringstream
Pendekatan alternatif ialah menggunakan istringstream untuk membaca daripada std::string. Berikut ialah contoh:
#include <iostream> #include <string> #include <sstream> int main() { std::string myText("some-text-to-tokenize"); std::istringstream iss(myText); std::string token; while (std::getline(iss, token, '-')) { std::cout << token << std::endl; } return 0; }
Kaedah ini hanya melingkari aliran istring, memecahkan rentetan menjadi token berdasarkan pembatas yang dinyatakan dalam getline().
Penyelesaian 2: Menggunakan Boost Toolkit
Sebagai alternatif, seseorang boleh menggunakan kelas tokenizer kit alat Boost untuk lebih fleksibiliti dan kawalan ke atas parameter tokenisasi. Berikut ialah contoh menggunakan Boost:
#include <iostream> #include <string> #include <boost/tokenizer.hpp> int main() { std::string myText("some-text-to-tokenize"); boost::tokenizer<> tokenizer(myText, "-"); for (auto token : tokenizer) { std::cout << token << std::endl; } return 0; }
Atas ialah kandungan terperinci Bagaimana untuk Tokenize C String Menggunakan strtok() Tanpa Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!