Qual é a maneira mais fácil de converter uma matriz de char para uma matriz WCHAR?
Pergunta
No meu código, eu recebo um const char array
como o seguinte:
const char * myString = someFunction();
Agora eu quero processá-lo posteriormente como um wchar array
vez que as funções que eu uso depois não lidar com cordas estreitas.
O que é a maneira mais fácil para alcançar este objetivo?
Por fim MultiByteToWideChar? (No entanto, uma vez que é uma string estreita que eu recebo como entrada, ele não tem caracteres de vários bytes => provavelmente não a solução mais bonita)
Solução
const char * myString = someFunction();
const int len = strlen(myString);
std::vector<wchar_t> myWString (len);
std::copy(myString, myString + len, myWString.begin());
const wchar_t * result = &myWString[0];
Outras dicas
MultiByteToWideChar funcionará a menos que você estiver usando caracteres estendidos na cadeia estreita. Se seu um alfa seqüência numérica simples, em seguida, ele deve funcionar bem.
Você também pode olhar para mbstowcs que é um pouco menos complicada, mas não oferecem a mesma quantidade de controle.