Quale funzione dovrebbe essere utilizzata per convertire la stringa in un doppio lungo?
-
29-10-2019 - |
Domanda
Nota che in generale, double
è diverso da long double
.
strtod
Converte la stringa in double
, ma quale funzione dovrebbe essere utilizzata per convertire la stringa in un doppio lungo?
Soluzione
In C ++ 03, usa boost::lexical_cast
, o:
std::stringstream ss(the_string);
long double ld;
if (ss >> ld) {
// it worked
}
In C99, usa strtold
.
In C89, usa sscanf
insieme a %Lg
.
In C ++ 11 usa stold
.
Potrebbero esserci sottili differenze su quali formati ciascuno accetta, quindi controlla prima i dettagli ...
Altri suggerimenti
Hai taggato la tua domanda come "C ++", quindi ti darò una risposta C ++:
Perché non usare solo i flussi?
std::stringstream ss(myString);
long double x;
ss >> x;
In C ++, posso solo raccomandare boost::lexical_cast
(o in generale tramite gli iostream).
In c? nessuna idea.
Puoi usare istream
per leggere a lungo il doppio dalla stringa. Vedere qui http://www.cplusplus.com/reference/iostream/istream/operator%3e%3e/
Se ti piace scanf
famiglia di funzioni, leggi con %Lf