Frage

Ich verwende MultiBytetowiDechar, um meine Saite in ein Wstring umzuwandeln.Ich versuche zuerst, die erforderliche Größe für mein Wstring zu erhalten.Entsprechend der Dokumentation, die 0 als das letzte Argument vorbei ist, sollte dies das erreichen.Die Verwendung von MultiByteToWideChar(CP_UTF8, MB_COMPOSITE, str.c_str(), -1, nullptr, 0); gibt 0 als die erforderliche Größe des Wstring-Puffers zurück.Ich habe bestätigt, dass Str eine nicht leere Zeichenfolge ist.Was mache ich hier falsch?

War es hilfreich?

Lösung

von der MSDN-Dokumentation :

für utf-8 oder -code Page 54936 (GB18030, beginnend mit Windows Vista) müssen DWFLAGs auf 0 oder MB_ERR_INVALID_Chars eingestellt sein.Andernfalls schlägt die Funktion mit error_invalid_flags aus.

Sie verwenden CP_UTF8, führen aber auch die MB_COMPOSITE-Flagge an, weshalb es fehlgeschlagen ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top