Im Bereich der Windows-Programmierung die Aufgabe, Unicode-Daten (UTF-8) aus einer Datei abzurufen Eine breite Zeichenfolge (wstring) kann durch die vielseitigen Funktionen des C 11-Standards erreicht werden.
Der Kern dieser Lösung liegt in der Nutzung der std::codecvt_utf8 Facette. Diese Facette dient als Brücke zwischen UTF-8-codierten Bytefolgen und Zeichenketten, die UCS2- oder UCS4-Darstellung verwenden. Es ist der Schlüssel zum Lesen und Schreiben von UTF-8-Dateien, die sowohl Text- als auch Binärformate umfassen.
Um die Leistungsfähigkeit der Facette zu nutzen, Ein Gebietsschemaobjekt wird normalerweise instanziiert. Dieses Objekt kapselt kulturspezifische Informationen als eine Reihe von Facetten, die gemeinsam eine spezifische lokalisierte Umgebung definieren. Nach Erhalt kann der Stream-Puffer mit diesem Gebietsschema durchdrungen werden.
Anhand eines sorgfältig ausgearbeiteten Beispiels demonstrieren wir die praktische Anwendung dieses Ansatzes:
#include
#include
#include
std::wstring readFile(const char* filename)
{
std::wifstream wif(filename);
wif.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8));
std::wstringstream wss;
wss Diese Funktion öffnet ordnungsgemäß eine bestimmte UTF-8-Datei, liest ihren Inhalt in einen Wstring und gibt den resultierenden String zurück.
Alternativer Ansatz: Globales C-Gebietsschema festlegen
Eine weitere praktikable Option besteht darin, das globale C-Gebietsschema festzulegen, bevor mit String-Streams gearbeitet wird. Dieser Befehl stellt sicher, dass alle nachfolgenden Aufrufe des std::locale-Standardkonstruktors Kopien des globalen C-Gebietsschemas liefern, wodurch die Notwendigkeit einer expliziten Stream-Puffer-Imbuing entfällt.
std::locale::global(std::locale(std::locale::empty(), new std::codecvt_utf8));
Mit dieser Änderung können wstrings mühelos aus UTF-8-Dateien gelesen werden:
std::wstring wstr = readFile("a.txt");
Schlussfolgerung
Die oben genannten Techniken bieten robuste und effiziente Mittel zur Umgang mit Unicode-Dateien (UTF-8) in Windows-Umgebungen, wodurch Entwickler große Zeichenfolgen effektiv manipulieren und verarbeiten können.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3