„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie lese ich Unicode-UTF-8-Dateien in Wstrings in Windows mit C++11?

Wie lese ich Unicode-UTF-8-Dateien in Wstrings in Windows mit C++11?

Veröffentlicht am 21.12.2024
Durchsuche:865

How to Read Unicode UTF-8 Files into Wstrings in Windows with C  11?

Einlesen von Unicode-UTF-8-Dateien in WStrings in Windows

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.

Nutzung der std::codecvt_utf8 Facette

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.

Einrichten einer lokalisierten Umgebung mit std::locale

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.

Lesen von UTF-8-Dateien mit Codecvt_utf8

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.

Neuestes Tutorial Mehr>

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