J'ai actuellement cette fonction:sautille ligne de boucle
double GrabNumber() {
double x;
cin >> x;
while (cin.fail()) {
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "You can only type numbers!\nEnter the number: ";
cin >> x;
}
return x;
}
Son but est de vérifier si x
est un numéro valide, le retour si elle est valide ou répéter cin >> x
si elle est pas.
Il est appelé au cours de cette fonction:
void addition() {
cout << "\nEnter the first number: ";
double a = GrabNumber();
cout << "Enter the second number: ";
double b = GrabNumber();
// rest of code
Lorsque je tape par exemple « 6+ » quand il me dit d'entrer dans le premier numéro, il l'accepte, mais immédiatement va à la deuxième ligne et appelle une erreur où je n'ai même pas entré mon entrée. Je suppose que c'est parce que la première entrée accepte seulement "6" tandis que "+" va à la deuxième entrée retournant une erreur. Par conséquent, il doit y avoir un problème avec les paramètres de while
.
Je pense que vous devrez utiliser ['getline'] (http: // www .cplusplus.com/reference/string/string/getline /) et analyser la ligne complète, au lieu d'utiliser 'cin' comme ça – Garf365
Mais Getline se lit comme une chaîne –