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

Bagaimana untuk Membaca Fail Unicode (UTF-8) ke dalam wstrings pada Windows dengan C 11?

Patricia Arquette
Lepaskan: 2024-11-06 07:26:02
asal
1022 orang telah melayarinya

How to Read Unicode (UTF-8) Files into wstrings on Windows with C  11?

Membaca Fail Unicode UTF-8 ke dalam Wstrings pada Windows

Membaca fail Unicode (UTF-8) ke dalam wstrings (s) pada Windows boleh dicapai dengan cekap menggunakan aspek std::codecvt_utf8 C 11.

Dengan std::codecvt_utf8, penukaran antara rentetan bait UTF-8 dan rentetan aksara UCS2 atau UCS4 dipermudahkan. Facet ini membolehkan membaca dan menulis fail UTF-8, kedua-dua teks dan perduaan.

Untuk memanfaatkan facet, cipta objek setempat yang merangkum aspek yang mentakrifkan persekitaran setempat yang diingini. Setelah objek setempat dibuat, imbas penimbal strim anda dengannya.

Berikut ialah pelaksanaan menggunakan imbuing:

#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();
}
Salin selepas log masuk

Selepas menjiwai penimbal strim, membaca fail ke dalam wstring adalah mudah:

std::wstring wstr = readFile("a.txt");
Salin selepas log masuk

Sebagai alternatif, menetapkan tempat tempatan C global sebelum bekerja dengan aliran rentetan akan menghapuskan keperluan untuk imbuhan eksplisit:

std::locale::global(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));
Salin selepas log masuk

Ini menetapkan tempat global sebagai lalai, yang akan secara automatik gunakan pada penimbal strim masa hadapan.

Atas ialah kandungan terperinci Bagaimana untuk Membaca Fail Unicode (UTF-8) ke dalam wstrings pada 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