Salut à tous !
J'ai voulu tester dans une petite fonction main une saisie sécurisée, pour l'exemple, j'ai voulu faire rentrer à l'utilisateur un nombre, et seulement un nombre. Voici à quoi ressemble mon code :
#include <iostream>
using namespace std;
int main()
{
int saisie = 0;
do
{
cout<<"veuillez saisir un nombre \n";
cin.clear();
cin>>saisie;
}
while(cin.fail());
return 0;
}
Lorsque je rentre un nombre, tout se passe bien, mais lorsque je rentre autre chose, comme un caractère par exemple, la phrase "veuillez saisir un nombre" s'affiche en boucle sans me laissez saisir quoi que ce soit.
Essaye de rajouter un petit "cin.ignore(std::numeric_limits<int>::max(),'\n');" dans ta boucle.
Tout fonctionne grâce à cette ligne, peut on m'expliquer le fonctionnement de cette magie noire ?
Cette ligne dit à std::cin d'ignorer toute saisie sauf les entiers inférieurs à MAX_INT (std::numeric_limits<int>::max()) et les retours à la ligne ('\n')
Pour plus d'infos cf la doc de std::cin
Oui je rattrape tous mes topics 6 mois plus tard :$