Heim > Backend-Entwicklung > C++ > Wie lese ich Unicode-Dateien (UTF-8) in wstrings unter Windows mit C 11?

Wie lese ich Unicode-Dateien (UTF-8) in wstrings unter Windows mit C 11?

Patricia Arquette
Freigeben: 2024-11-06 07:26:02
Original
984 Leute haben es durchsucht

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

Einlesen von Unicode-UTF-8-Dateien in Wstrings unter Windows

Das Einlesen von Unicode-Dateien (UTF-8) in Wstrings unter Windows ist möglich kann mithilfe der std::codecvt_utf8-Facette von C 11 effizient erreicht werden.

Mit std::codecvt_utf8 wird die Konvertierung zwischen UTF-8-Bytezeichenfolgen und UCS2- oder UCS4-Zeichenfolgen vereinfacht. Diese Facette ermöglicht das Lesen und Schreiben von UTF-8-Dateien, sowohl Text- als auch Binärdateien.

Um die Facette zu nutzen, erstellen Sie ein Gebietsschemaobjekt, das Facetten kapselt, die die gewünschte lokalisierte Umgebung definieren. Sobald das Locale-Objekt erstellt wurde, füllen Sie Ihren Stream-Puffer damit auf.

Hier ist eine Implementierung mit 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();
}
Nach dem Login kopieren

Nach dem Auffüllen des Stream-Puffers ist das Einlesen der Datei in einen Wstring unkompliziert:

std::wstring wstr = readFile("a.txt");
Nach dem Login kopieren

Alternativ wird durch das Festlegen des globalen C-Gebietsschemas vor der Arbeit mit String-Streams die Notwendigkeit einer expliziten Durchdringung überflüssig gemacht:

std::locale::global(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));
Nach dem Login kopieren

Dadurch wird das globale Gebietsschema als Standard festgelegt, was automatisch erfolgt Auf zukünftige Stream-Puffer anwenden.

Das obige ist der detaillierte Inhalt vonWie lese ich Unicode-Dateien (UTF-8) in wstrings unter Windows mit C 11?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage