Problème avec la fonction getline()

Résolu/Fermé
yannick2013 Messages postés 13 Date d'inscription lundi 15 juillet 2013 Statut Membre Dernière intervention 6 mai 2020 - 19 juil. 2013 à 01:52
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;

}

A voir également:

1 réponse

apprendreEtSeDevelopper Messages postés 65 Date d'inscription vendredi 22 juillet 2011 Statut Membre Dernière intervention 18 octobre 2013 6
22 juil. 2013 à 15:17
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+
0