Bonjour,
Voila je debute en C++ (mais bon j'ai deja fait du C, du java et d'autre..) et j'ai un petit probleme sur la validation de la saisie d'un choix dans un menu.
voici le code
Code :
- void main()
- {
- const int nbItem=3;
- int choix;
- std::string *item = new std::string[nbItem];
- item[0] = "choix1";
- item[1] = "choix2";
- item[2] = "choix3";
- choix = menu(item, nbItem);
- std::cout<<choix;
- }
- int menu (std::string *item, int nbItem)
- {
- int i;
- int choix;
- choix = 0; //initialisation pour entrer dans la boucle
- for (i=0; i<=nbItem-1; i++)
- {
- std::cout<<i<<" - "<<item[i]<<std::endl;
- }
- // si une lettre probleme... voir pourquoi
- while ((choix <=0) || (choix>nbItem))
- {
- std::cout<<"Saisiez votre choix entre 1 et "<<nbItem<<":"<<std::endl;
- std::cin>>choix;
- std::cin.clear(); //purge le buffer d'entrée
- }
- return (choix);
- }
|
Donc voila, si je saisie un int hors intervalle, pas de probleme je boucle comme il faut.
En revanche si je saisie un caractere, la c'est la catastrophe... En effet, je revient bien dans ma boucle et mon message d'invite de saisie s'affiche, mais ça ne me rend jamais la main et ça affiche le message en bouvle (infinie)...
Si quelqu'un a deja eu le meme probleme et l'a resolu merci de me venir en aide.
---------------
Des images