Memisahkan Rentetan kepada Vektor Rentetan dalam C
Memisahkan rentetan kepada bahagian konstituennya boleh menjadi tugas biasa dalam pengaturcaraan. Apabila bekerja dengan rentetan dalam C , anda mungkin menghadapi keperluan untuk memisahkan rentetan menjadi vektor rentetan. Terdapat beberapa cara untuk menyelesaikan tugas ini, tetapi pendekatan yang paling cekap dan mudah bergantung pada keperluan khusus aplikasi anda.
Tingkatkan Perpustakaan Algoritma
Jika anda menggunakan perpustakaan Boost, anda boleh memanfaatkan perpustakaan algoritma rentetan yang berkuasa. Boost menyediakan pelaksanaan yang mantap bagi fungsi 'split', yang membolehkan anda membahagi rentetan dengan mudah menjadi vektor rentetan. Coretan kod berikut menunjukkan cara menggunakan Boost untuk membelah rentetan:
#include <boost/algorithm/string/classification.hpp> // Include boost::for is_any_of #include <boost/algorithm/string/split.hpp> // Include for boost::split // ... std::vector<std::string> words; std::string s; boost::split(words, s, boost::is_any_of(", "), boost::token_compress_on);
Dalam contoh ini, vektor 'perkataan' akan mengandungi setiap subrentetan yang dipisahkan oleh pembatas yang ditentukan (koma dan ruang). Selain itu, 'token_compress_on' memastikan bahawa pembatas berturut-turut dianggap sebagai pembatas tunggal.
Fungsi Perpustakaan Standard
Jika Boost bukan satu pilihan, anda boleh menggunakan C 's fungsi perpustakaan standard untuk manipulasi rentetan. Satu pendekatan ialah menggunakan fungsi 'cari' untuk mencari setiap pembatas dan kemudian menggunakan 'substr' untuk mengekstrak subrentetan:
std::vector<std::string> words; std::string s; for (size_t pos = 0; ; pos += len) { size_t len = s.find(",", pos); if (len == std::string::npos) { len = s.length() - pos; } words.push_back(s.substr(pos, len)); if (len == 0) break; }
Coretan kod ini akan membelah rentetan 's' dengan koma dan menambah setiap subrentetan kepada vektor 'perkataan'.
Biasa Ungkapan
Pilihan lain ialah menggunakan ungkapan biasa untuk memisahkan rentetan. Ungkapan biasa boleh menyediakan cara yang berkuasa dan fleksibel untuk melaksanakan operasi rentetan kompleks:
std::vector<std::string> words; std::string s; std::regex re(","); std::sregex_token_iterator it(s.begin(), s.end(), re, -1); std::sregex_token_iterator end; while (it != end) { words.push_back(*it); ++it; }
Coretan kod ini menggunakan 'std::regex' dan 'std::sregex_token_iterator' untuk memisahkan rentetan 's' dengan koma, sekali lagi menambah setiap subrentetan pada 'perkataan' vektor.
Kesimpulan
Pendekatan terbaik untuk memisahkan rentetan kepada vektor rentetan bergantung pada keperluan khusus anda. Jika anda memerlukan penyelesaian yang berkuasa dan serba boleh, perpustakaan algoritma rentetan Boost amat disyorkan. Untuk pelaksanaan C standard, pertimbangkan untuk menggunakan fungsi 'cari' dan 'substr' atau ungkapan biasa.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membahagikan Rentetan kepada Vektor Rentetan dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!