¿Cuál es la forma más fácil de convertir una matriz de caracteres a una matriz WCHAR?
Pregunta
En mi código, he recibido un const char array
como la siguiente:
const char * myString = someFunction();
Ahora quiero posprocesarlos como un wchar array
ya que las funciones que utilizo después no manejar cadenas estrechas.
¿Cuál es la forma más fácil de lograr este objetivo?
Finalmente MultiByteToWideChar? (Sin embargo, puesto que es una cadena estrecha que me sale como entrada, que no tiene caracteres de varios bytes => probablemente no es la solución más bella)
Solución
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];
Otros consejos
MultiByteToWideChar funcionará a menos que esté utilizando caracteres extendidos en la cadena estrecha. Si es una cadena alfanumérica claro entonces que debería funcionar bien.
También puede buscar en mbstowcs que es un poco menos complicado, pero no ofrecen el mismo grado de control.