J'ai une question à propos de C++. J'ai cherché une réponse et n'ai trouvé rien qui puisse réparer mon code. J'ai donc décidé de me demander. Mon problème est, que j'ai fait ce petit programme qui sortira le jour de la semaine, donc si l'utilisateur entre 1, il sortira le 1er jour de la semaine (dimanche ou lundi, dépend de l'endroit où vous vivez) et ainsi de suite ainsi de suite. Toutefois, si l'utilisateur entre par exemple, 8, le programme affichera "Veuillez choisir un nombre entre 1 et 7!" Cependant, mon problème est que lorsque l'utilisateur entre un caractère ou un mot aléatoire, il va boucler "S'il vous plaît choisir un nombre entre 1 et 7!" pour toujours.C++ Cin ignore les non-entiers?
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
int main() {
int input;
do {
cin >> input;
switch (input) {
case 1:
cout << "Sunday" << endl;
break;
case 2:
cout << "Monday" << endl;
break;
case 3:
cout << "Tuesday" << endl;
break;
case 4:
cout << "Wednesday" << endl;
break;
case 5:
cout << "Thursday" << endl;
break;
case 6:
cout << "Friday" << endl;
break;
case 7:
cout << "Saturday" << endl;
break;
default:
cout << "Please choose a number between 1 and 7!" << endl; // if user chooses a number not from 1-7 output this. But if input is not an int and for example "a", it will loop this forever.
break;
}
} while (true);
return 0;
}
C'est normal. Vous ne vérifiez jamais si 'cin >> entrée;' OK. – user0042