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

Duplication possible:
Comment parsingr une chaîne de caractères dans un int en C ++?

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

Supposons que vous vous attendiez à ce que la chaîne contienne des nombres réels (“1”, “345”, “38944”, par exemple).

Aussi, supposons que vous n’avez pas de boost, et que vous voulez vraiment le faire en C ++, pas avec la vieille méthode C.

#include  // st is input ssortingng int result; ssortingngstream(st) >> result; 

Utilisez les stream C ++.

 std::ssortingng plop("123"); std::ssortingngstream str(plop); int x; str >> x; /* Lets not forget to error checking */ if (!str) { // The conversion failed. // Need to do something here. // Maybe throw an exception } 

PS Ce principe de base est le fonctionnement de la librairie 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 une chaîne et des formats numériques et inversement. En dessous, il utilise un stream de chaînes, donc tout ce qui peut être rassemblé dans un stream, puis non marshalé à partir d’un stream (consultez les opérateurs >> et <<).

J’ai utilisé quelque chose comme le suivant dans le code C ++ avant:

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

C ++ FAQ Lite

[39.2] Comment convertir une chaîne std :: ssortingng en nombre?

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

Permettez-moi d’append mon vote pour boost :: lexical_cast

 #include  int val = boost::lexical_cast(strval) ; 

Il jette bad_lexical_cast en cas d’erreur.

Utilisez atoi

Peut-être que je comprends mal la question, pourquoi exactement ne voudriez-vous pas utiliser atoi ? Je ne vois aucun intérêt à réinventer la roue.

Est-ce que je manque juste le point ici?

dans “stdapi.h”

 StrToInt 

Cette fonction vous indique le résultat et combien de caractères ont participé à la conversion.