• Miércoles 20 de Noviembre de 2024, 06:26

Autor Tema:  Convertir Cstring a char *  (Leído 4585 veces)

a343

  • Miembro activo
  • **
  • Mensajes: 39
    • Ver Perfil
Convertir Cstring a char *
« en: Domingo 24 de Julio de 2011, 22:45 »
0
Necesito usar la funcion atoi y atof, la cual me piden mandarle un valor char * pero yo tengo Cstring y no se como cambiarlo.
He visto por otro foro la funcion wcstombs, y la puse de tal manera:
char *aux;

wcstombs(aux,(TCHAR*)(LPCTSTR) nu,nu.GetLength()+1);

nu es el CString. Parece que no da fallo pero no se si esta correcto.

Tambien quiero hacer la siguiente operacion:

LPTSTR lptstrCopy = (LPTSTR) GlobalLock(hglbCopy);
strcpy(lptstrCopy,C);

Donde C es un CString, que necesito pasar a char* y lptstrCopy tambien lo necesito para poder usar dicha funcion.

Agradeceria su ayuda!!

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re:Convertir Cstring a char *
« Respuesta #1 en: Lunes 25 de Julio de 2011, 19:02 »
0
Si nu es del tipo std::string entonces usa: nu.c_str(), que retorna un "const char *". Mucho ojo en el const, por que este método retorna un puntero a caracteres que no debes modificar.

a343

  • Miembro activo
  • **
  • Mensajes: 39
    • Ver Perfil
Re:Convertir Cstring a char *
« Respuesta #2 en: Martes 26 de Julio de 2011, 10:08 »
0
Hola,
Ya intente eso pero no me funciona, me da un error diciendo que c_str() no es miembro de nu.
Yo lo hice de esta manera:
.
.
.
char *aux;

wcstombs(aux,(TCHAR*)(LPCTSTR) nu,nu.GetLength()+1);

return(atoi(aux));
}

Utilice esa funcion, la vi en un foro, pero realmente no se si esto funciona o no, no se mu bien lo que hace esta funcion

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:Convertir Cstring a char *
« Respuesta #3 en: Martes 26 de Julio de 2011, 15:16 »
0
me da un error diciendo que c_str() no es miembro de nu.

Esto es porque estas usando la clase CString de la MFC, y el consejo que te dieron es para la clase string de la STL (son dos clases diferentes para manejar strings)

Respecto a tu otor problema lamento no poder ayudarte, no tengo experiencia con la MFC  :losiento:

Tendras que preguntar a alguien que tenga experiencia con MFC

Saldos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re:Convertir Cstring a char *
« Respuesta #4 en: Miércoles 27 de Julio de 2011, 02:55 »
0
Revisando la documentación de la clase CString de la MFC, encontré que está permitido hacer el casting: (LPCTSTR)nu
http://msdn.microsoft.com/en-us/library/awkwbzyc.aspx

Sin embargo no deberías hacer esto: (LPTSTR)nu ni esto: (TCHAR*)nu por que implica que vas a modificar los datos apuntados.

Esto debería funcionar sin necesidad de quitar el "const" al tipo apuntado.

wcstombs(aux, (LPCTSTR)nu, nu.GetLength() + 1);

Nota: asumiendo que TCHAR está definido como wchar_t y no como char.
« última modificación: Miércoles 27 de Julio de 2011, 03:08 por Amilius »

a343

  • Miembro activo
  • **
  • Mensajes: 39
    • Ver Perfil
Re:Convertir Cstring a char *
« Respuesta #5 en: Miércoles 27 de Julio de 2011, 09:50 »
0
Finalmente lo hice asi

CT2CA aux (nu);
return(atoi(aux));

Y parece que todo anda correctamente.
Gracias!