SoloCodigo
Programación General => C/C++ => Visual C++ => Mensaje iniciado 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!!
-
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.
-
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
-
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 :)
-
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.
-
Finalmente lo hice asi
CT2CA aux (nu);
return(atoi(aux));
Y parece que todo anda correctamente.
Gracias!