Tokenizing std::string boleh dilakukan menggunakan pelbagai kaedah. Satu pendekatan biasa ialah menggunakan fungsi C strtok(), yang mengambil tatasusunan aksara sebagai input dan memecahkannya kepada token berdasarkan pembatas yang ditentukan. Walau bagaimanapun, objek std::string tidak boleh dihantar terus ke strtok() kerana ia tidak menghala ke tatasusunan aksara.
Untuk mengatasi pengehadan ini, kita boleh menggunakan kaedah alternatif untuk tokenize std::string. Satu kaedah sedemikian ialah menggunakan objek istringstream, yang boleh dibuat dengan menghantar std::string kepada pembinanya. Objek istringstream kemudiannya boleh digunakan untuk membaca token daripada rentetan menggunakan fungsi getline(), yang mengambil pembatas sebagai argumen kedua.
#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, objek istringstream digunakan untuk membaca std::string "some-text-to-tokenize" ke dalam satu siri token, dibatasi oleh aksara "-". Fungsi getline() digunakan untuk mengekstrak setiap token daripada rentetan, dan token kemudian dicetak ke konsol.
Alternatif untuk menggunakan istringstream ialah menggunakan utiliti seperti Boost.Tokenizer, yang menyediakan pendekatan yang lebih fleksibel dan boleh diubah suai untuk tokenizing rentetan. Walau bagaimanapun, pendekatan istringstream secara amnya mencukupi untuk keperluan tokenisasi asas.
Atas ialah kandungan terperinci Bagaimana untuk Tokenize `std::string` Tanpa Menggunakan `strtok()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!