Heim >Backend-Entwicklung >C++ >Wie kann ich einen C-String zuverlässig in einen Wide-String konvertieren?

Wie kann ich einen C-String zuverlässig in einen Wide-String konvertieren?

Barbara Streisand
Barbara StreisandOriginal
2024-12-22 12:34:10440Durchsuche

How Can I Reliably Convert a C   String to a Wide String?

Konvertieren von Strings in Wstrings in C

Ihre Frage betrifft die Konvertierung eines Strings s in einen breiten String ws in C. Während einige Methoden den Originalinhalt nicht vollständig bewahren können, gibt es eine effektive Lösung mit Standardbibliothekskomponenten.

Problembeschreibung

Gegeben eine Zeichenfolge s, möchten Sie Weisen Sie seinen Inhalt einem wstring ws zu. Frühere Versuche haben jedoch zu einer verzerrten oder ungenauen Konvertierung geführt.

Lösung: Standardbibliothekskonvertierung

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

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

Erklärung

Dieser Code verwendet Standardbibliotheksfunktionen, um Folgendes auszuführen Konvertierung.

  • std::wstring_convert: Ein Konverterobjekt, das eine from_bytes()-Methode zum Konvertieren einer Zeichenzeichenfolge in eine Wstring bereitstellt.
  • std::codecvt_utf8_utf16: A Zeichenkodierungskonverter, der zwischen UTF-8 und UTF-16 konvertiert Kodierungen.

Durch die Verwendung dieser Kodierungskonvertierung werden die ursprünglichen Unicode-Zeichen in s in ws genau beibehalten.

Das obige ist der detaillierte Inhalt vonWie kann ich einen C-String zuverlässig in einen Wide-String 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