IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

boucle infinie presque résolu


Sujet :

C++

  1. #1
    Membre éclairé

    Homme Profil pro
    développeur à la maison
    Inscrit en
    Septembre 2006
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : développeur à la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 433
    Billets dans le blog
    16
    Par défaut boucle infinie presque résolu
    Bonjour,

    Lorsque je rentre un caractere non numérique quand cin demande un chiffre, j'ai une boucle infinie.
    avec cin.clear et cin ignore, ça va mieux. Mais si je rentre quoi que ce soit, le programme ne va pas plus loin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      do{
        std::cout<<"minimum 2, maximum "<<max_joueurs<<" :";
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
        std::cin.clear();
        std::cin>>nbjoueurs;
      }while(nbjoueurs<2 || nbjoueurs>max_joueurs);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ ./a.out 
    combien de joueur ? minimum 2, maximum 6 :2
    une idée?

  2. #2
    Membre éclairé

    Homme Profil pro
    développeur à la maison
    Inscrit en
    Septembre 2006
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : développeur à la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 433
    Billets dans le blog
    16
    Par défaut
    Voici comment je m'en suis sorti:
    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <sstream>
    #include <string>
    int choix;
    std::string sasie;
    std::stringstream geek;
    geek<<saisie;
    geek>>choix;

    si ça peut aider quelqu'un.
    qu'en prensez-vous?

  3. #3
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 297
    Par défaut
    Tu fais la RAZ trop tôt. Lis d'abord, et nettoie le flux s'il est mis KO après la lecture.

    https://cpp.developpez.com/faq/cpp/?...isies-avec-cin

    Le ignore n'ayant de sens (avant) QUE qu'il y a eu un getline avant un >>. Sachant qu'il y a d'autres solutions. Re-cf. la FAQ
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 503
    Par défaut
    Il y a une autre chose dont il faut tenir compte : cin.ignore() est un appel bloquant. Donc si le buffer d'entrée est initialement vide, l'appel va éliminer toute la première saisie de l'utilisateur avant de passer la main à std::cin >> nbjoueurs et il faudra alors saisir une deuxième fois la valeur attendue.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Boucle Infinie] pour un menu
    Par NhyMbuS dans le forum C++
    Réponses: 5
    Dernier message: 20/07/2005, 09h14
  2. symptome de la boucle infinie dans une requete
    Par ouam81 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 27/05/2005, 12h10
  3. Réponses: 15
    Dernier message: 24/05/2005, 08h34
  4. [Socket] Pb de boucle infinie
    Par Myogtha dans le forum Entrée/Sortie
    Réponses: 12
    Dernier message: 10/06/2004, 14h10
  5. [C#] Comment eviter les boucles infinies ?
    Par Thomas Lebrun dans le forum C#
    Réponses: 12
    Dernier message: 09/06/2004, 00h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo