Konvertieren eines C-Strings in einen Wstring
Konvertieren eines Strings (oder Zeichens) in einen Wstring (oder wchar_t) in C ) ermöglicht Ihnen die Arbeit mit Breitzeichen, die zur Darstellung von Nicht-ASCII-Zeichen wie japanischem Kanji oder Kyrillisch verwendet werden Zeichen.
Verwendung der Standardbibliothek
Für Konvertierungen zwischen UTF-8 und UTF-16 bietet die Standardbibliothek eine umfassende Lösung:
#include <locale> #include <codecvt> #include <string> std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter; std::wstring wstr = converter.from_bytes("おはよう");
Beispiel
Das folgende Beispiel zeigt dies Konvertierung:
#include <iostream> int main() { std::string a = "Привет всем!"; std::wstring b = std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>>().from_bytes(a); std::cout << b << std::endl; return 0; }
Ausgabe:
Привет всем!
Legacy-Ansatz (veraltet)
Beachten Sie, dass der Codecvt-Header in C 17 veraltet ist. Für Systeme ohne Ersatzbibliothek können Sie die Legacy-Bibliothek verwenden Ansatz:
#include <wchar.h> wchar_t* wcs = (wchar_t*)MultiByteToWideChar(CP_UTF8, 0, a.c_str(), -1, NULL, 0);
Diese Methode verarbeitet jedoch möglicherweise bestimmte Unicode-Zeichen nicht korrekt.
Das obige ist der detaillierte Inhalt vonWie konvertiert man C-Strings in W-Strings?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!