Programación General > Visual C++

 Convertir Cstring a char *

(1/2) > >>

a343:
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:
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:
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:

--- Cita de: a343 en Martes 26 de Julio de 2011, 10:08 ---me da un error diciendo que c_str() no es miembro de nu.

--- Fin de la cita ---

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 :)

Amilius:
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.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa