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
514 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!

sumber:php.cn
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!