Heim > Backend-Entwicklung > C++ > Wie konvertiere ich einen String (oder char) in einen wstring (oder wchar_t) in C?

Wie konvertiere ich einen String (oder char) in einen wstring (oder wchar_t) in C?

Barbara Streisand
Freigeben: 2025-01-04 19:24:39
Original
179 Leute haben es durchsucht

How to Convert a String (or char) to a wstring (or wchar_t) in C  ?

C String (oder char) in wstring (oder wchar_t) konvertieren

Problem:

Wie können wir bei einer gegebenen String- oder Char-Variablen deren Inhalt einem Wstring oder zuweisen? wchar_t Variable?

Lösung:

Angenommen, die Eingabezeichenfolge ist in UTF-8 codiert, enthält die Standardbibliothek (C 11 und neuer) mehrere Techniken für Konvertierung zwischen UTF-8 und UTF-16:

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

using namespace std;

// Create a converter using the UTF-8/UTF-16 codecvt
wstring_convert<codecvt_utf8_utf16<wchar_t>> converter;

// Convert a narrow (UTF-8) string to a wide (UTF-16) string
wstring wide = converter.from_bytes(narrow);

// Convert a wide (UTF-16) string to a narrow (UTF-8) string
string narrow = converter.to_bytes(wide);
Nach dem Login kopieren

Beispiel (Online kompilierbar und ausführbar):

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

int main() {
  // Sample input string in UTF-8 (see notes below for real-world scenarios):
  string s = "おはよう";

  // Create a wstring to store the converted string
  wstring ws;

  // Convert the narrow (UTF-8) string to wide (UTF-16)
  std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> conv;
  ws = conv.from_bytes(s);

  // Print the converted wstring
  wcout << ws << endl;

  return 0;
}
Nach dem Login kopieren

Hinweise:

  1. Stellen Sie sicher, dass die Eingabezeichenfolge tatsächlich in UTF-8 codiert ist. Nicht-UTF-8-Codierungen führen nicht zur korrekten Konvertierung.
  2. Der codecvt_utf8_utf16-Konverter geht von der Little-Endian-Bytereihenfolge für UTF-16 aus. Wenn Ihr System die Big-Endian-Bytereihenfolge verwendet, sollten Sie die Verwendung von codecvt_utf8 in Betracht ziehen. stattdessen.

    Das obige ist der detaillierte Inhalt vonWie konvertiere ich einen String (oder char) in einen wstring (oder wchar_t) in C?. 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