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!