• Viernes 8 de Noviembre de 2024, 16:33

Autor Tema:  C++ Convertir un const char * en double  (Leído 1560 veces)

basslawrence

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
C++ Convertir un const char * en double
« en: Martes 2 de Febrero de 2010, 18:03 »
0
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

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: C++ Convertir un const char * en double
« Respuesta #1 en: Martes 2 de Febrero de 2010, 19:18 »
0
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 :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

basslawrence

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: C++ Convertir un const char * en double
« Respuesta #2 en: Martes 2 de Febrero de 2010, 21:28 »
0
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

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: C++ Convertir un const char * en double
« Respuesta #3 en: Martes 2 de Febrero de 2010, 22:58 »
0
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.

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================