Como usar corretamente MultiByteToWideChar
-
21-12-2019 - |
Pergunta
Eu estou usando MultiByteToWideChar para converter a seqüência de caracteres para uma wstring.Eu sou o primeiro a tentar obter o tamanho desejado para o meu wstring.De acordo com a documentação passando de 0, o último argumento deve fazer isso.Usando MultiByteToWideChar(CP_UTF8, MB_COMPOSITE, str.c_str(), -1, nullptr, 0);
retorna 0 como o tamanho necessário da wstring buffer.Tenho verificado que a str não é uma seqüência de caracteres vazia assim.O que estou fazendo de errado aqui?
Solução
do MSDN Documentation :
.Para UTF-8 ou código Página 54936 (GB18030, começando com o Windows Vista), DWFLAGS deve ser definido para 0 ou mb_err_invalid_chars.Caso contrário, a função falhará com error_invalid_flags.
Você está usando cp_utf8, mas também passando a bandeira MB_COMPOSITE, de modo que é por isso que está falhando.