SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: basslawrence en Martes 2 de Febrero de 2010, 18:03

Título: C++ Convertir un const char * en double
Publicado por: basslawrence en Martes 2 de Febrero de 2010, 18:03
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:
Título: Re: C++ Convertir un const char * en double
Publicado por: ProfesorX en Martes 2 de Febrero de 2010, 19:18
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 :)
Título: Re: C++ Convertir un const char * en double
Publicado por: basslawrence en Martes 2 de Febrero de 2010, 21:28
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 :)

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
Título: Re: C++ Convertir un const char * en double
Publicado por: ProfesorX en Martes 2 de Febrero de 2010, 22:58
Con gusto:

Código: C++
  1.  
  2. // "carlos" no es un valor double valido, no se puede convertir, por lo tanto la funcion dara cero
  3. nombre = "carlos";
  4. double num1 = atof(nombre.c_str());
  5. // "2.0" si es un valor double valido, por lo que si se puede convertir y dara como resultado 2.0
  6. nombre = "2.0";
  7. double num2 = atof(nombre.c_str());
  8.  
  9.  

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.