Pregunta

Tenga en cuenta que en general, double es diferente de long double.

strtod Convierte la cadena en double, pero ¿qué función debe usarse para convertir la cadena en doble?

¿Fue útil?

Solución

En C ++ 03, usa boost::lexical_cast, o:

std::stringstream ss(the_string);
long double ld;
if (ss >> ld) {
    // it worked
}

En C99, usa strtold.

En C89, usa sscanf con %Lg.

En c ++ 11 use stold.

Puede haber diferencias sutiles en cuanto a exactamente qué formatos acepta cada uno, así que verifique los detalles primero ...

Otros consejos

Has etiquetado tu pregunta como "C ++", así que te voy a dar una respuesta C ++:

¿Por qué no usar transmisiones?

std::stringstream ss(myString);
long double x;
ss >> x;

En C ++, solo puedo recomendar boost::lexical_cast (o en general a través de los iostreams).

Cía ? ni idea.

Puedes usar istream para leer el doble largo de la cadena. Mira aquí http://www.cplusplus.com/reference/iostream/istream/operator%3E%3E/

Si te gusta scanf Familia de funciones, lea con %Lf

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top