Laden von UTF-8-Inhalten in Wstrings unter Windows
Das Einlesen von Unicode-Dateien (UTF-8) in Wstrings auf Windows-Plattformen erfordert eine sorgfältige Handhabung Zeichenkodierung, um eine ordnungsgemäße Interpretation von Textdaten sicherzustellen.
Mit der Einführung von C 11 bietet die std::codecvt_utf8-Facette eine robuste Lösung für die Konvertierung von UTF-8-kodierten Bytezeichenfolgen in UCS2- oder UCS4-Zeichenfolgen. Diese Facette kann sowohl das Lesen als auch das Schreiben von UTF-8-Dateien erleichtern.
Verwendung der Facette std::codecvt_utf8
Um die Facette std::codecvt_utf8 effektiv zu nutzen, muss die Folgende Schritte sind erforderlich:
Eine Beispielimplementierung dieses Ansatzes ist unten beschrieben:
#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(); }
Diese Funktion kann verwendet werden, um UTF-8-Inhalte bequem in eine Wstring-Variable zu laden.
Alternative: Festlegen des globalen C-Gebietsschemas
Alternativ ist es möglich, das globale C festzulegen Stellen Sie das Gebietsschema auf UTF-8 um, bevor Sie mit String-Streams arbeiten. Dadurch entfällt die Notwendigkeit, Stream-Puffer manuell aufzufüllen:
std::locale::global(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));
Mit diesem Ansatz geben alle nachfolgenden Standard-Gebietsschemakonstruktoren eine Kopie des geänderten globalen C-Gebietsschemas zurück, was eine automatische Handhabung der UTF-8-Codierung ermöglicht.
Das obige ist der detaillierte Inhalt vonWie lade ich UTF-8-Inhalte in Wstrings unter Windows?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!