SoloCodigo

Programación General => C/C++ => Visual C++ => Mensaje iniciado por: a343 en Domingo 24 de Julio de 2011, 22:45

Título: Convertir Cstring a char *
Publicado por: a343 en Domingo 24 de Julio de 2011, 22:45
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!!
Título: Re:Convertir Cstring a char *
Publicado por: Amilius en Lunes 25 de Julio de 2011, 19:02
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.
Título: Re:Convertir Cstring a char *
Publicado por: a343 en Martes 26 de Julio de 2011, 10:08
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
Título: Re:Convertir Cstring a char *
Publicado por: ProfesorX en Martes 26 de Julio de 2011, 15:16
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 :)
Título: Re:Convertir Cstring a char *
Publicado por: Amilius en Miércoles 27 de Julio de 2011, 02:55
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.
Título: Re:Convertir Cstring a char *
Publicado por: a343 en Miércoles 27 de Julio de 2011, 09:50
Finalmente lo hice asi

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

Y parece que todo anda correctamente.
Gracias!