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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top