Dalam bidang pengaturcaraan Windows, tugas untuk mendapatkan semula data Unicode (UTF-8) daripada fail ke dalam rentetan aksara lebar (wstring) boleh dicapai melalui keupayaan serba boleh yang disediakan oleh standard C 11.
Inti penyelesaian ini terletak pada penggunaan std ::codecvt_utf8 facet. Faset ini berfungsi sebagai jambatan antara rentetan bait yang dikodkan UTF-8 dan rentetan aksara yang menggunakan perwakilan UCS2 atau UCS4. Ia memegang kunci untuk membaca dan menulis fail UTF-8, merangkumi kedua-dua format teks dan binari.
Untuk memanfaatkan kuasa aspek, objek setempat biasanya dibuat seketika. Objek ini merangkum maklumat khusus budaya sebagai 集合 aspek yang bersama-sama mentakrifkan persekitaran setempat tertentu. Setelah diperoleh, penimbal strim boleh disemai dengan tempat ini.
Dengan contoh yang direka dengan teliti, kami menunjukkan aplikasi praktikal pendekatan ini:
<code class="cpp">#include <sstream> #include <fstream> #include <codecvt> std::wstring readFile(const char* filename) { std::wifstream wif(filename); wif.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>)); std::wstringstream wss; wss << wif.rdbuf(); return wss.str(); }</code>
Fungsi ini membuka fail UTF-8 yang ditetapkan, membaca kandungannya ke dalam wstring dan mengembalikan rentetan yang terhasil.
Satu lagi pilihan berdaya maju melibatkan penetapan tempat C global sebelum terlibat dengan aliran rentetan. Perintah ini memastikan bahawa semua seruan seterusnya bagi pembina lalai std::locale akan menghasilkan salinan tempat C global, mengelakkan keperluan untuk imbuan penimbal strim yang jelas.
<code class="cpp">std::locale::global(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));</code>
Dengan pengubahsuaian ini, wstrings boleh mudah dibaca daripada fail UTF-8:
<code class="cpp">std::wstring wstr = readFile("a.txt");</code>
Teknik yang dinyatakan di atas menyediakan cara yang mantap dan cekap untuk mengendalikan fail Unicode (UTF-8) dalam persekitaran Windows, membolehkan pembangun untuk berkesan memanipulasi dan memproses rentetan aksara lebar.
Atas ialah kandungan terperinci Bagaimana untuk Membaca Fail Unicode UTF-8 ke dalam Wstrings dalam Windows dengan C 11?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!