Heim > Backend-Entwicklung > C++ > Wie lade ich UTF-8-Inhalte in Wstrings unter Windows?

Wie lade ich UTF-8-Inhalte in Wstrings unter Windows?

Susan Sarandon
Freigeben: 2024-11-06 21:35:03
Original
813 Leute haben es durchsucht

How to Load UTF-8 Content into Wstrings on Windows?

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:

  1. Erstellen Sie ein Gebietsschemaobjekt, das kulturspezifische Informationen kapselt und die UTF-8-Konvertierungsfacette enthält.
  2. Den Stream-Puffer eines Ifstreams mit den lokalisierten Informationen füllen .
  3. Verwenden Sie den durchdrungenen Stream-Puffer, um die UTF-8-Datei zu lesen.

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();
}
Nach dem Login kopieren

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>));
Nach dem Login kopieren

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!

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