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 :

Vider son buffer après un try-catch


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 48
    Points
    48
    Par défaut Vider son buffer après un try-catch
    Bonjour, je vous montre mon programme de test et je vous explique ensuite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #include <iostream>
    #include <limits>
     
    using namespace std;
     
    int main()
    {
        for(int i = 0; i < 10; i++)
        {
            try
            {
                int a;
     
                if(!(cin >> a)) throw(1);
     
                if(a < 1 || a > 3) throw(2);
            }
            catch(int const& e)
            {
                if(1 == e)
                {
                    cout << "Prob de saisie" << endl;
                    //cin.ignore(numeric_limits<int>::max(), '\n');
                }
                if(2 == e)
                {
                    cout << "Saisie pas dans le rang donnée" << endl;
                }
            }
            catch(...)
            {
                cout << "Exception on gérée" << endl;
            }
        }
     
    	return 0;
    }
    Alors déjà je ne sais pas si les exceptions sont légitimement appliquées ici, mais j'aimerais donc forcer l'utilisateur à entre un nombre en 1 et 3 (j'ai faire un for de 1 à 10 pour éviter une boucle infinie).
    S'il rentre un entier autre que 1, 2 ou 3 tout se passe bien, le programme boucle et permet de redemander la saisie.
    S'il rentre une chaîne de caractère ça part en sucette et ça m'affiche 10 fois problème de saisie. Je suppose donc que c'est lié à un problème de buffer mal vidé, j'aimerais donc savoir comment vider proprement l'entrée standard en c++ (la ligne commentée trouvée sur le net ne marche pas évidemment).
    Et puis s'il rentre une flottant tient, il s'affiche également 10 fois problème de saisie, je suppose donc que l'entrée est castée en int au moment du stockage dans la variable, en revanche je me demande pourquoi on se retrouve avec ce problème de buffer (ou alors je fais fausse piste mais je pense pas).

    Merci de votre aide!

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 48
    Points
    48
    Par défaut
    Merci

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

Discussions similaires

  1. Vider le buffer après un sleep ?
    Par olivier857 dans le forum C
    Réponses: 7
    Dernier message: 28/03/2006, 15h00
  2. [try-catch] relancer les instruction du bloc try
    Par nounou dans le forum Langage
    Réponses: 11
    Dernier message: 12/05/2004, 11h23
  3. [vb.net] Comment vider un buffer ?
    Par mdc dans le forum Windows Forms
    Réponses: 4
    Dernier message: 16/12/2003, 15h43
  4. Exception & Try..catch
    Par PurL dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/12/2002, 15h35
  5. Vider le buffer du clavier
    Par flavien tetart dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 12/07/2002, 08h35

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