¿Qué función debe usarse para convertir la cadena en doble?
-
29-10-2019 - |
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?
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