Come usare correttamente multibytetowidechar
-
21-12-2019 - |
Domanda
Sto usando il multibytetowidechar per convertire la mia stringa in una wstring.Sto per prima cosa tentando di ottenere le dimensioni richieste per la mia wstring.Secondo la documentazione che passa 0 come l'ultimo argomento dovrebbe realizzare questo.Usando MultiByteToWideChar(CP_UTF8, MB_COMPOSITE, str.c_str(), -1, nullptr, 0);
restituisce 0 come dimensione richiesta del buffer WSTRING.Ho verificato che str è anche una stringa non vuota.Cosa sto facendo male qui?
Soluzione
Dal Documentazione MSDN :
.Per UTF-8 o codice Page 54936 (GB18030, Avvio di Windows Vista), DWFLAGS deve essere impostato su 0 o MB_ERR_INVALID_CHARS.In caso contrario, la funzione non riesce con errori_invalid_flags.
Stai usando CP_UTF8 ma anche passando la bandiera MB_Composite, quindi è per questo che sta fallendo.