Memisahkan Token Rentetan Menggunakan C std::string
Soalan ini menangani cabaran membahagikan C std::string kepada berbilang token, terutamanya menggunakan pembatas ";". Walaupun beberapa penyelesaian yang dicadangkan melibatkan perpustakaan luaran seperti Boost, garis panduan untuk projek ini melarang penggunaannya. Oleh itu, kami meneroka pendekatan yang lebih mudah menggunakan Perpustakaan Standard C.
Satu kaedah yang berkesan ialah menggunakan fungsi std::getline(), yang menawarkan kepelbagaian dalam menentukan pembatas. Dalam kes ini, kami boleh melaksanakan proses tokenisasi seperti berikut:
#include <sstream> #include <iostream> #include <vector> using namespace std; int main() { vector<string> strings; // Vector to store split strings istringstream f("denmark;sweden;india;us"); // Input stringstream string s; // Variable to store individual strings while (getline(f, s, ';')) { cout << s << endl; // Display split string strings.push_back(s); // Store string in vector } }
Dalam pelaksanaan ini, kami mencipta aliran rentetan daripada rentetan input "denmark;sweden;india;us". Fungsi std::getline() digunakan untuk mengulangi aliran rentetan dan mendapatkan semula token yang dipisahkan oleh ";" pembatas. Setiap token yang diambil dicetak dan ditambah pada vektor rentetan untuk pemprosesan selanjutnya.
Dengan menggunakan pendekatan ini, kami mencapai tokenisasi rentetan input yang diingini tanpa bergantung pada perpustakaan luaran, mematuhi garis panduan yang ditetapkan.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan kepada Token dalam C Menggunakan std::getline()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!