46 votes

Comment convertir une chaîne C++ en entier ?

Possible Duplicate:
Comment convertir une chaîne de caractères C++ en un entier ?

Comment convertir une chaîne de caractères C++ en un entier ?

Supposons que vous attendez que la chaîne contienne réellement des nombres ("1", "345", "38944", par exemple).

De plus, supposons que vous n'ayez pas boost, et que vous souhaitiez vraiment le faire de la manière C++, pas la vieille manière pleine de bricolages du C.

74voto

yuku Points 15705
#inclure 

// st est une chaîne d'entrée
int résultat;
sstream(st) >> résultat;

33voto

Loki Astari Points 116129

Utilisez les flux C++.

std::string       plop("123");
std::stringstream str(plop);
int x;

str >> x;

/* N'oublions pas de vérifier les erreurs */
if (!str)
{
     // La conversion a échoué.
     // Il faut faire quelque chose ici.
     // Peut-être lancer une exception
}

PS. Ce principe de base est celui sur lequel fonctionne la bibliothèque boost lexical_cast<>.

Ma méthode préférée est le boost lexical_cast<>

#include 

int x = boost::lexical_cast("123");

Il fournit une méthode pour convertir entre formats de chaîne de caractères et de nombre et vice versa. En dessous, il utilise un flux de chaînes de caractères donc tout ce qui peut être mis en forme dans un flux puis déformaté d'un flux fonctionne (Regardez les opérateurs >> et <<).

4voto

ayaz Points 6910

J'ai déjà utilisé quelque chose comme ce qui suit dans du code C++ :

#include 
int main()
{
    char* str = "1234";
    std::stringstream s_str( str );
    int i;
    s_str >> i;
}

4voto

uvts_cvs Points 4163

C++ FAQ Lite

[39.2] Comment convertir une std::string en un nombre?

https://isocpp.org/wiki/faq/misc-technical-issues#convert-string-to-num

2voto

Ryan Ginstrom Points 8354

Permettez-moi d'ajouter mon vote pour boost::lexical_cast

#inclure 

int val = boost::lexical_cast(strval) ;

Il renvoie bad_lexical_cast en cas d'erreur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X