Programación General > C/C++
C++ Convertir un const char * en double
(1/1)
basslawrence:
Hola
Estoy trabajando en C++ VS 2005 y tengo el siguiente problema: tengo una variable que es de tipo string ó const char *. Esta contiene un nombre de una persona.
Necesito convertir esta variable en double. Como puedo hacer esto? he tratado de hacer esto con strtod, strtol, atoi, atof pero no funciona.
Este es un ejemplo:
string nombre;
nombre = "carlos";
const char* ConsNombre = nombre.c_str(); //Aqui convierto el string en const char*
//Ahora necesito convertie ConsNombre en double
???
Te agradezco si me puedes ayudar
Basslawrence :hitcomp:
ProfesorX:
Para convertir un char * en un double se utiliza la funcion atof() PERO para que funcione, la variable debe contener un valor double valido, si el valor no es valido, la funcion atof SIEMPRE regresara el valor de cero. Por lo tanto como tu variable ConsNombre contiene "carlos", "carlos" NO ES un valor double valido, y entonces atof regresara un cero.
Saludos :)
basslawrence:
--- Cita de: "ProfesorX" ---Para convertir un char * en un double se utiliza la funcion atof() PERO para que funcione, la variable debe contener un valor double valido, si el valor no es valido, la funcion atof SIEMPRE regresara el valor de cero. Por lo tanto como tu variable ConsNombre contiene "carlos", "carlos" NO ES un valor double valido, y entonces atof regresara un cero.
Saludos :)
--- Fin de la cita ---
Hola ProfesorX
No entiendo tu respuesta, a que te refierens con que la variable debe contener un valor double valido. Me puedes dar un ejemplo. Gracias
ProfesorX:
Con gusto:
--- Código: C++ --- // "carlos" no es un valor double valido, no se puede convertir, por lo tanto la funcion dara ceronombre = "carlos";double num1 = atof(nombre.c_str());// "2.0" si es un valor double valido, por lo que si se puede convertir y dara como resultado 2.0nombre = "2.0";double num2 = atof(nombre.c_str());
O sea, para que sea valido tu string debe contener un numero (con o sin punto decimal). Si no son numeros, no se puede convertir.
Navegación
Ir a la versión completa