2011-09-12 4 views

Répondre

14

En C++ 03, utilisez boost::lexical_cast, ou:

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

En C99, utilisez strtold. En C89, utilisez sscanf avec %Lg. En C++ 11, utilisez stold.

Il peut y avoir des différences subtiles quant à exactement quels formats chacun accepte, afin de vérifier les détails d'abord ...

+0

+1 pour 'if (ss >> ld)'. – Nawaz

+0

Cela m'a conduit à la bonne façon de convertir une chaîne en 64 bits (long double) sur une puce PIC32. _dstrtod() dans stdlib.h Qui savait ?? Merci! – Rob

1

En C++, je ne peux que recommander boost::lexical_cast (ou en général via les IOStreams).

In c? aucune idée.

+0

Juste un indice sur C pour vous Matthieu, toutes les conversions comme ça, vous pourriez faire avec * printf/* scanf – Shahbaz

6

Vous avez balisé votre question « C++ », donc je vais vous donner un C++ répondre:

Pourquoi ne pas simplement utiliser les flux?

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