UTF8 Bebas Platform dan Penukaran Aksara Luas dalam STL
Menukar antara rentetan UTF8 dalam std::string dan std::wstring ialah keperluan biasa apabila bekerja dengan aksara yang luas. Walaupun fungsi khusus platform seperti MultiByteToWideChar wujud, ia tidak sesuai untuk kod yang menyasarkan berbilang sistem pengendalian.
Penyelesaian untuk C 11 dan Kemudian
Dalam C 11, standard perpustakaan memperkenalkan sokongan untuk penukaran aksara melalui std::codecvt. Ini membolehkan penukaran UTF8 bebas platform menggunakan kod berikut:
// UTF-8 to UTF-16 std::string utf8Source; std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> convert; std::u16string utf16Dest = convert.from_bytes(utf8Source); // UTF-16 to UTF-8 std::u16string utf16Source; std::string utf8Dest = convert.to_bytes(utf16Source);
Pendekatan Lain
Seperti yang dinyatakan oleh jawapan lain, pendekatan alternatif wujud:
Memilih Pendekatan yang Tepat
Pilihan kaedah penukaran bergantung pada keperluan dan kebergantungan projek. C 11's std::codecvt disyorkan untuk projek yang mengutamakan kesederhanaan dan mudah alih. Untuk keperluan kompleks atau khusus platform, pertimbangkan Boost.Locale atau iconv.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan UTF8 Bebas Platform dan Penukaran Aksara Luas dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!