Pb getline dans switch

Signaler
Messages postés
122
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
22 juillet 2006
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Bonjour,

Je débute en c++ et travaille pour l'instant en mode console
(ben ouais, mais pour apprendre c'est bien).
j'ai un problème quand j'inclue getline dans une fonction switch, ex:

string laPhrase;
int choix;

switch(choix)
{
case 1:
cout<<"Entrez une phrase :"<<endl;
getline(cin,laPhrase);
break;

case 2:
etc.........
}

Lorsque que le case 1 s'exécute, il affiche bien le cout<< mais zappe complètement la saisie de la phrase, autrement dit getline, et passe à la suite du programme.
Quelqu'un pourrait me dire pourquoi????
Merci!

5 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
"console pour apprendre c'est bien"
A part te faire perdre du temps, tu y vois un autre interet ?
Tu es certain de la syntaxe ??? Tu vois, moi je l'ignore totalement et c'est tres bien, place libre pour les choses utiles.
Penses-y.
BruNews, ciao...
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
heu le 1er param de getline est un fichier
cin en est-un, ce n'est pas un mot-cle du langage C++ ?

Bon de toutes facon ecrit ton code en C et non en C++:

case1:
{
char buffer[256];
printf("input the sentence ...\n");
gets(buffer);
break;
}

ou sinon au lieu de cin met stdin !!

:-p :-p :-p :shy) :-p :-p :-p :shy) :-p :-p :shy)
:shy) :-p :shy) :shy) :-p :shy) :shy) :shy) :-p :shy) :-p
:shy) :-p :shy) :shy) :-p :shy) :shy) :shy) :-p :shy) :-p
:-p :-p :shy) :shy) :-p :-p :-p :shy) :-p :-p :shy)
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
cin n'est pas un mot clé mais un istream, donc il convient bien pour la premier argument de getline.
D'ailleurs chez moi le code de tintin72 marche très bien
Messages postés
37
Date d'inscription
jeudi 9 mai 2002
Statut
Membre
Dernière intervention
30 août 2003

essaye ce code :
cin.getline(laPhrase, sizeof(laPhrase));
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
Non ca marchera pas car laPhrase est de type string et il faut un char*.
Pourquoi pas tout simplement cin >> laPhrase;
?