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.