¿Cuál es la forma más sencilla de convertir char [] a / de tchar [] en C / C ++ (ms)?

StackOverflow https://stackoverflow.com/questions/159442

  •  03-07-2019
  •  | 
  •  

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.

¿Fue útil?

Otros consejos

La forma más sencilla es usar las macros de conversión:

  • CW2A
  • CA2W
  • etc ...

MSDN

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:

UTF8 a / desde la conversión de caracteres anchos en STL

  
    

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 [].

http://www.wincli.com/?p=72

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top