Problème avec la fonction getline() [Résolu/Fermé]

Messages postés
11
Date d'inscription
lundi 15 juillet 2013
Statut
Membre
Dernière intervention
16 août 2013
- - Dernière réponse : apprendreEtSeDevelopper
Messages postés
65
Date d'inscription
vendredi 22 juillet 2011
Statut
Membre
Dernière intervention
18 octobre 2013
- 22 juil. 2013 à 15:17
Bonjour tout le monde et merci de prendre la peine de me lire, je debute dans la programation en c++ j'ai ecrit une petite application en console qui pose une serie de question et dans cette serie la question <<votre nom est >> ne se pose pas j'ai cru comprendre qu'on pouvait corriger cela avec getline mais j'ai essayer et sa na rien changer et je ne s'est pas cela est du a quoi je solicite donc votre aide pour m'aider a comprendre pourquoi je n'y arrive pas
voici le code sans getline:
#include <iostream>
#include <string>
using namespace std;

int main()
{
    cout <<"voici un programme en console" <<endl <<endl;
    int ageUtilisateur(0), nombreAmis(0);
    cout << "votre age est " <<endl;
    cin >> ageUtilisateur;
    cout <<"Votre nom est " <<endl;
    string nomUtilisateur (" sans non");
    cin >> nomUtilisateur;
    cout << "Vous avez combien d'amis " ;
    cin >> nombreAmis;
    cout <<"Resumons la situation votre age est " <<ageUtilisateur <<endl <<"ans, votre nom est" <<nomUtilisateur <<" et vous avez " <<nombreAmis <<"amis";


    return 0;

}



Voici le code avec getline
#include <iostream>
#include <string>
using namespace std;

int main()
{
    cout <<"voici un programme en console" <<endl <<endl;
    int ageUtilisateur(0), nombreAmis(0);
    cout << "votre age est " <<endl;
    cin >> ageUtilisateur;
    cout <<"Votre nom est " <<endl;
    string nomUtilisateur (" sans non");
    getline(cin,nomUtilisateur);
    cout << "Vous avez combien d'amis " ;
    cin >> nombreAmis;
    cout <<"Resumons la situation votre age est " <<ageUtilisateur <<endl <<"ans, votre nom est" <<nomUtilisateur <<" et vous avez " <<nombreAmis <<"amis";


    return 0;

}

Afficher la suite 

1 réponse

Messages postés
65
Date d'inscription
vendredi 22 juillet 2011
Statut
Membre
Dernière intervention
18 octobre 2013
6
0
Merci
Salut,

Ton problème est simple : en fait quand tu fait un getLine() celui ci récupère ce qu'il y a dans ton buffer de clavier (ce que tu as noté dans le "votre age est")

Pour corriger le problème il suffit de vider le buffer, tu peux faire appelle à la fonction
void clean_buff()
{
int c;
do {
c = getchar();
} while (c != '\n' && c != EOF);
}
avant d'utiliser un getLine()

A+