Heim >Backend-Entwicklung >C++ >Wie kann ich einen UTF-8-String sicher in einen Wstring in C konvertieren?

Wie kann ich einen UTF-8-String sicher in einen Wstring in C konvertieren?

Linda Hamilton
Linda HamiltonOriginal
2024-12-18 03:04:09129Durchsuche

How Can I Safely Convert a UTF-8 String to a wstring in C  ?

C: Konvertieren eines Strings in einen Wstring unter Beibehaltung der Codierung

Sie erhalten einen String s mit japanischen Zeichen und möchten dessen Inhalt zuweisen zu einem wstring, ws. Die Aufgabe besteht darin, diese Aufgabe auszuführen, ohne dass Codierungsprobleme auftreten.

Lösung:

Bei Verwendung von C 11 und höher kann diese Aufgabe ausschließlich mit der Standardbibliothek ausgeführt werden.

Schritt 1: Notwendiges hinzufügen Header

#include <locale>
#include <codecvt>
#include <string>

Schritt 2: Erstellen Sie einen Konverter

std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;

Dieser Konverter übernimmt die Konvertierung zwischen UTF-8 (die Kodierung von s) und UTF-16 (die Kodierung von ws).

Schritt 3: Konvertieren Sie die Zeichenfolge in a wstring

std::wstring ws = converter.from_bytes(s);

Beispiel:

std::string s = "おはよう";
std::wstring ws;

std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
ws = converter.from_bytes(s);

Hinweis:

  • Diese Lösung geht davon aus s enthält gültige UTF-8-codierte Unicode-Daten.
  • Für komplexere Codierungsszenarien: Erwägen Sie die Verwendung von std::codecvt_utf8.

Das obige ist der detaillierte Inhalt vonWie kann ich einen UTF-8-String sicher in einen Wstring in C konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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