Bonsoir
Souvent on aura besoin de vérifier l'entrée de l'utilisateur pour des raisons de cohérence et de compatibilité, dans ce sujet on discutera la meilleure méthode pour vérifier qu'une chaine (fournie depuis le clavier) respecte la syntaxe d'un nombre réel ou pas.
La méthode la plus simple est de faire la vérification à travers une méthode codée à la main comme celle là par exemple :
et il existe d'autres méthodes comme le regex par exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 #include <cctype> #include <cstdlib> #include <iostream> using namespace std; bool is_real_number(const char* number_string) { int counter = 0; while (*number_string) { char c = *number_string++; if (c == '.') { counter++; if (counter > 1) return false; } else { if (!std::isdigit(c)) return false; } } return true; } int main() { char cbuf[20] = {0}; cin.getline(cbuf, '\n'); float num; if (is_real_number(cbuf)) { num = atof(cbuf); cout << num << endl; } else { cout << "ERROR !" << endl; } return 0; }
A votre avis, quelle est la meilleure méthode pour vérifier que l'entrée du user respecte bien la syntaxe d'un nombre de type float ?
Merci d'avance pour vos participations.
Partager