Quale funzione dovrebbe essere utilizzata per convertire la stringa in un doppio lungo?

StackOverflow https://stackoverflow.com/questions/7389322

  •  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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top