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

Résolu
adrienmarty Messages postés 76 Statut Membre -  
adrienmarty Messages postés 76 Statut Membre -
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 11653 Statut Contributeur 1 847
 
Mets un second cin.get(); Ca devrait aller mieux :-).
1
Idéophage Messages postés 54 Statut Membre 5
 
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 11653 Statut Contributeur 1 847
 
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 54 Statut Membre 5
 
Ah, merci bien. J'inverse le sens des chevrons avec cin, parfois...
0
adrienmarty Messages postés 76 Statut Membre 3
 
Merci beaucoup pour vos réponse, Mon probleme est résolu :)
0