Apabila bekerja dengan C , selalunya wajar untuk tokenize rentetan, membahagikannya kepada substring atau token yang lebih kecil berdasarkan a pembatas. Fungsi C strtok() ialah pilihan popular untuk tokenisasi rentetan, tetapi ia memerlukan input char*, manakala std::string ialah jenis rentetan pilihan dalam C . Artikel ini meneroka penyelesaian untuk menggunakan strtok() pada std::string.
Satu pendekatan ialah menggunakan objek istringstream untuk menukar std::string menjadi aliran aksara, yang kemudiannya boleh ditandakan oleh strtok(). Contohnya:
#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; }
Dalam contoh ini, istringstream iss dibina daripada std::string myText. Fungsi std::getline kemudiannya digunakan untuk mengekstrak token daripada strim, menggunakan aksara pembatas '-' sebagai pemisah. Setiap token dicetak ke konsol menggunakan std::cout.
Pilihan lain yang disebut dalam respons ialah menggunakan perpustakaan Boost, yang menyediakan keupayaan tokenisasi yang lebih fleksibel. Walau bagaimanapun, penyelesaian ini memerlukan perpustakaan Boost dipasang pada sistem.
Atas ialah kandungan terperinci Bagaimanakah saya boleh tokenize std::string menggunakan strtok() dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!