Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Membaca Fail Unicode UTF-8 ke dalam Wstrings dalam Windows dengan C 11?

Bagaimana untuk Membaca Fail Unicode UTF-8 ke dalam Wstrings dalam Windows dengan C 11?

Susan Sarandon
Lepaskan: 2024-11-06 05:30:02
asal
664 orang telah melayarinya

How to Read Unicode UTF-8 Files into Wstrings in Windows with C  11?

Membaca Fail Unicode UTF-8 ke dalam WStrings dalam Windows

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.

Memanfaatkan std::codecvt_utf8 Facet

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.

Mewujudkan Persekitaran Setempat dengan std::locale

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.

Membaca Fail UTF-8 dengan Codecvt_utf8

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>
Salin selepas log masuk

Fungsi ini membuka fail UTF-8 yang ditetapkan, membaca kandungannya ke dalam wstring dan mengembalikan rentetan yang terhasil.

Pendekatan Alternatif: Menetapkan Global C Locale

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>
Salin selepas log masuk

Dengan pengubahsuaian ini, wstrings boleh mudah dibaca daripada fail UTF-8:

<code class="cpp">std::wstring wstr = readFile("a.txt");</code>
Salin selepas log masuk

Kesimpulan

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan