Bug cin >> C++ [WXDevC++]

Résolu/Fermé
adrienmarty Messages postés 67 Date d'inscription mercredi 29 avril 2009 Statut Membre Dernière intervention 25 octobre 2013 - 23 août 2012 à 22:10
adrienmarty Messages postés 67 Date d'inscription mercredi 29 avril 2009 Statut Membre Dernière intervention 25 octobre 2013 - 24 août 2012 à 12:00
Bonjour,

Je début en C++ sous WXDevC++ .
Mon probleme est que mon programe se termine quand je valide la valeur que je souhaite attribuer a ma variable en utilisant cin...
Voici mon programme :

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int age =0 ;
    cout << "Quel age avez-vous ? :" ;
    cin >>age;
    cout << "Ah ! Vous avez donc " << age << " ans !" << endl;
    
    
    
    cout << "Press the enter key to continue ...";
    cin.get();
    return EXIT_SUCCESS;
}


Pourtant je marque bien une pause grace a :

cin.get();
    return EXIT_SUCCESS;


Je ne comprend pas pourquoi cette ligne est le reste ne s'execute pas :

cout << "Ah ! Vous avez donc " << age << " ans !" << endl;


Merci d'avancenpour vos réponses très nombreuses, je l'espère...

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
23 août 2012 à 22:48
Mets un second cin.get(); Ca devrait aller mieux :-).
1
Idéophage Messages postés 43 Date d'inscription mardi 21 août 2012 Statut Membre Dernière intervention 23 novembre 2013 5
24 août 2012 à 00:17
Explications : le caractère '\n' n'est pas retiré du flot par cin << age, donc il est récupéré par cin.get(). Ce serati plus propre de vider le tampon après la lecture de age, mais bon, c'est pas important.

(google is'nt my friend)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
24 août 2012 à 00:37
Attention au sens des chevrons. C'est cin >> age; mais cout << age;
Sinon, ce serait plus propre de vider le buffer comme tu dis, mais aussi de contrôler la lecture de la variable.

Pour vider (à faire uniquement si le buffer clavier est non vide : !cin.fail()) :
cin.clear();
cin.ignore(numeric_limits<streamsize>::max());

Pour le contrôle, on pourra se contenter de vérifier : cin.eof() || cin.bad()
0
Idéophage Messages postés 43 Date d'inscription mardi 21 août 2012 Statut Membre Dernière intervention 23 novembre 2013 5
24 août 2012 à 01:07
Ah, merci bien. J'inverse le sens des chevrons avec cin, parfois...
0
adrienmarty Messages postés 67 Date d'inscription mercredi 29 avril 2009 Statut Membre Dernière intervention 25 octobre 2013 3
24 août 2012 à 12:00
Merci beaucoup pour vos réponse, Mon probleme est résolu :)
0