2011-01-03 16 views
3

Ich möchte eine std :: string in std :: wstring konvertieren. Es gibt zwei Ansätze, auf die ich gestoßen bin.Warum mit MultiByteToWideCharArray std :: string in std :: wstring konvertieren?

  1. eine String str Da wir den folgenden Code in breite Zeichenfolge mit wstring Wide = std :: wstring (str.begin(), str.end()) umwandeln können nicht;

  2. Der andere Ansatz besteht darin, MultiByteToWideCharArray() zu verwenden.

Was ich wollte, war, zu verstehen, was der Nachteil ist der erste Ansatz der Verwendung und wie funktioniert der zweite Ansatz löst Sache Problem

Antwort

4

MultiByteToWideChar mehr Optionen bietet (wie die Fähigkeit, „Codepages“ wählen) und übersetzt Nicht-Standardsymbole korrekt

4

Die erste Option unterstützt keine Multibyte-Codierung. Es wird jedes Byte (char) in der Zeichenfolge durchlaufen und es in ein breites Zeichen konvertieren. Wenn Sie eine Zeichenfolge mit Multibyte-Codierung haben, können einzelne Zeichen mehr als ein Byte benötigen, so dass ein Standard-String-Iterator ungeeignet ist.

Die Funktion MultiByteToWideChar unterstützt verschiedene Multibyte-Formate, wie im Codepage-Parameter angegeben.

Verwandte Themen