Foros del Web » Programación para mayores de 30 ;) » Programación General »

Como pasar de CString a char* en Visual C++

Estas en el tema de Como pasar de CString a char* en Visual C++ en el foro de Programación General en Foros del Web. Hola, intento hacer la conversion de datos de una variable CString a una char* en Visual C++. Lo he intentado de la siguiente forma: CString ...
  #1 (permalink)  
Antiguo 26/04/2005, 10:49
Avatar de Nietzsche  
Fecha de Ingreso: enero-2005
Ubicación: MALAGA-ESPAÑA
Mensajes: 228
Antigüedad: 19 años, 3 meses
Puntos: 0
Como pasar de CString a char* en Visual C++

Hola, intento hacer la conversion de datos de una variable CString a una char* en Visual C++.

Lo he intentado de la siguiente forma:

CString resul;
// Almaceno en resul los datos
char * cadena;
wcstombs(cadena,(TCHAR*)(LPCTSTR) resul,resul.GetLength()+1);

Pero el compulador me dice lo siguiente:
error C2664: 'wcstombs' : cannot convert parameter 2 from 'char *' to 'const unsigned short *'

Gracias por su ayuda.
  #2 (permalink)  
Antiguo 26/04/2005, 10:51
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Probá con la función c_str(), wcstombs es para pasar de Unicode a Multibyte.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Última edición por Eternal Idol; 27/04/2005 a las 00:35
  #3 (permalink)  
Antiguo 26/04/2005, 16:17
Avatar de Nietzsche  
Fecha de Ingreso: enero-2005
Ubicación: MALAGA-ESPAÑA
Mensajes: 228
Antigüedad: 19 años, 3 meses
Puntos: 0
No funciona.

error C2039: 'c_str' : is not a member of 'CString'
  #4 (permalink)  
Antiguo 27/04/2005, 00:22
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
No, me equivoque, no es como la clase string standard. Tenes que hace un casting a LPCTSTR que si estas compilando con UNICODE te devolvera la cadena en UNICODE y sino en ANSI (char* comun).
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 27/04/2005, 00:36
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Osea:

TCHAR *cadena = (LPCTSTR)resul;

Eso repito te lo devuelve en lo que estes compilando ANSI o UNICODE. Despues podes usar funciones de conversion tipo wcstombs si estas en UNICODE o mbstowcs si estas en ANSI.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #6 (permalink)  
Antiguo 27/04/2005, 19:13
Avatar de Nietzsche  
Fecha de Ingreso: enero-2005
Ubicación: MALAGA-ESPAÑA
Mensajes: 228
Antigüedad: 19 años, 3 meses
Puntos: 0
Si, es que el CString es diferente al string normal, eso me confundio a mi tambien.
De todas formas, esa solucion que me has dado me sigue sin funcionar:

error C2440: 'initializing' : cannot convert from 'const char *' to 'char *'

Pero parece que esto ya se aproxima mas.
  #7 (permalink)  
Antiguo 28/04/2005, 00:25
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Si, LPCTSTR es Long Pointer Constant String, cambialo por LPTSTR que le quita el constant y listo. Lo ideal seria que hicieras una copia de ese buffer y no lo usaras directamente.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:06.