Bonjour,
Je souhaite tester si une chaine est numérique en C++ ?
Par avance, merci
Version imprimable
Bonjour,
Je souhaite tester si une chaine est numérique en C++ ?
Par avance, merci
Utiliser les expressions régulières ?
Salut,
Il y a une plusieurs possibilités différentes selon la situation et les objectifs finaux...
Tu peux, par exemple, utiliser utiliser la fonction membre find_first_not_of de la classe string qui renvoie la position du premier caractère n'entrant pas dans la chaine fournie en paramètre, std::npos si aucun caractère n'a été trouvé (typiquement avec, comme chaine, "0123456789")
Tu peux tenter une conversion basée sur les flux de conversion
Il y a des possibilités basées sur les expressions régulières (renseigne toi sur boost::regex, par exemple)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 std::stringstream ss; ss<<lachaine; int num) if(!ss>>num) { pas numérique } /* si plusieurs nombres sont attendus */ while(ss>>num) { /* si tu veux récupérer les nombres, fait le ici */ } if(!ss.str().empty) { /*il y a eu des caractères non convertis */ }
Et j'en oublie certainement...
Je te rappellerais donc que la règle première d'un forum est "aide nous à t'aider" ;) :
Plus tu nous donnera de précisions sur tes besoins ou ta situation, plus nous serons en mesure d'apporter la solution la plus adéquate à ta question ;)