Cara Menukar wstring kepada rentetan dalam C dengan Cekap
Menukar wstring kepada rentetan dalam C boleh menjadi penting apabila bekerja dengan antarabangsa atau luas data aksara. Panduan ini akan meneroka beberapa teknik untuk melaksanakan penukaran ini dengan berkesan.
Kaedah 1: std::wstring_convert
Diperkenalkan dalam C 11, std::wstring_convert menyediakan mudah dan cara yang cekap untuk menukar antara wstring dan string. Ia menggunakan aspek codecvt yang sesuai untuk mengendalikan penukaran.
#include <locale> #include <codecvt> // Unicode UTF-8 codecvt std::wstring_convert<std::codecvt_utf8<wchar_t>> converter; // Conversion std::wstring wstr = L"Hello"; std::string str = converter.to_bytes(wstr);
Kaedah 2: std::string Pembebanan Pembina
C 11 memperkenalkan pembina untuk std:: rentetan yang menerima penunjuk kepada tatasusunan aksara. Ini boleh digunakan untuk menukar rentetan w kepada rentetan dengan menukar aksara lebar kepada aksara sempit.
#include <string> // Convert wchar_t to char using wcstombs std::wstring wstr = L"Hello"; const wchar_t* wchar_ptr = wstr.c_str(); char* char_ptr; size_t char_size = wcstombs(nullptr, wchar_ptr, 0); char_ptr = new char[char_size + 1]; wcstombs(char_ptr, wchar_ptr, char_size + 1); // Construct std::string from char array std::string str(char_ptr);
Kaedah 3: std::stringstream
Walaupun tidak disyorkan, std::stringstream boleh digunakan untuk menukar wstring kepada rentetan, tetapi ia memerlukan langkah tambahan untuk menukar wstringstream ke rentetan.
#include <sstream> std::wstring wstr = L"Hello"; std::wstringstream wss(wstr); // Extract std::string from std::wstringstream std::string str; wss >> str;
Kesimpulan
std::wstring_convert dan std::string constructor overloading menyediakan kaedah yang cekap dan langsung untuk menukar wstring kepada rentetan. Walaupun std::stringstream boleh digunakan, ia adalah kurang optimum. Pilihan kaedah penukaran bergantung pada keperluan khusus dan keutamaan pelaksanaan.
Atas ialah kandungan terperinci Bagaimana dengan Cekap Menukar wstring kepada rentetan dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!