Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Saya Boleh Mengasingkan Rentetan Dibatasi Koma dengan Cekap dalam C Menggunakan aliran rentetan?
Memisahkan Rentetan Dibatasi Koma menggunakan Stringstream
Dalam C , aliran rentetan ialah alat yang berkuasa untuk memanipulasi rentetan dan mengekstrak data. Walaupun ia boleh memisahkan rentetan yang dibatasi ruang dengan mudah, rentetan yang dipisahkan koma memerlukan pendekatan yang diubah suai sedikit.
Pendekatan Asal:
Kod berikut menunjukkan pendekatan asal menggunakan aliran rentetan untuk memisahkan rentetan dengan ruang:
std::string str = "abc def,ghi"; std::stringstream ss(str); string token; while (ss >> token) { printf("%s\n", token.c_str()); }
Output:
abc def,ghi
Pendekatan ini gagal memisahkan token yang dipisahkan koma kerana >> operator dalam aliran rentetan menganggap aksara ruang putih sebagai pembatas.
Pendekatan Diubah Suai:
Untuk memisahkan rentetan yang dipisahkan koma, kami boleh menggunakan fungsi getline() yang disediakan oleh aliran rentetan. Fungsi ini membolehkan kita membaca rentetan sehingga pembatas tertentu ditemui. Berikut ialah kod yang diubah suai:
#include <iostream> #include <sstream> std::string input = "abc,def,ghi"; std::istringstream ss(input); std::string token; while(std::getline(ss, token, ',')) { std::cout << token << '\n'; }
Output:
abc def ghi
Penjelasan:
Fungsi getline() membaca rentetan input ss dan mengekstrak token sehingga kejadian pertama aksara yang kami tentukan sebagai pembatas (di sini, ia adalah koma). Ia kemudian memberikan token yang diekstrak kepada rentetan token dan mengembalikan benar jika berjaya. Dengan memanggil getline() berulang kali, kami boleh mengulangi melalui token yang dipisahkan koma dalam rentetan input.
Pendekatan ini secara berkesan memisahkan rentetan yang dipisahkan koma kepada token individu, membolehkan pemprosesan atau manipulasi selanjutnya dalam program anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengasingkan Rentetan Dibatasi Koma dengan Cekap dalam C Menggunakan aliran rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!