¿Cuál es la forma más sencilla de convertir char [] a / de tchar [] en C / C ++ (ms)?
Pregunta
Esto parece una pregunta bastante sencilla, pero siempre me resulta difícil buscar esta función porque parece que hay muchas variaciones con respecto a la referencia de char y tchar.
Solución
MultiByteToWideChar pero también vea " Algunas de las trampas de MultiByteToWideChar " .
Otros consejos
TCHAR es un typedef específico de Microsoft para char o wchar_t (un carácter ancho).
La conversión a char depende de cuál de estos es realmente. Si TCHAR es en realidad un personaje, entonces puedes hacer un lanzamiento simple, pero si es realmente un wchar_t, necesitarás una rutina para convertir entre conjuntos de caracteres. Vea la función MultiByteToWideChar ()
También hay algunas respuestas en esta publicación, especialmente si está buscando una solución multiplataforma:
Aunque en esta situación particular, creo que TChar es un personaje amplio, solo tendré que hacer la conversión si no lo es. que debo comprobar de alguna manera.
if (sizeof(TCHAR) != sizeof(wchar_t))
{ .... }
Lo bueno de eso es que ambos tamaños de los iguales son constantes, lo que significa que el compilador manejará (y eliminará) el if (), y si son iguales, eliminará todo lo que esté dentro de las llaves
Aquí está el código CPP que duplica _TCHAR * argv [] a char * argn [].
Si adopta un código antiguo para Windows, el uso simple define mencionado en el código como opcional.
Puedes poner condición en tu código
ifdef _UNICODE
{// ME GUSTA TCHAR ES AMPLIO CHAR} ELSE {// ME GUSTA TCHAR ES CHAR}
Me doy cuenta de que este es un hilo viejo, pero no me dio el "correcto". respuesta, así que lo agrego ahora.
La forma en que esto parece hacerse ahora es usar la macro TEXTO. El ejemplo de FindFirstFile en msdn señala esto. http://msdn.microsoft .com / es-us / library / windows / desktop / aa364418% 28v = vs.85% 29.aspx