Problème C++11 : deux getline à la suite

Joker -  
 Joker -
Bonjour,

J'essaie d'écrire un programme qui gère un tableau de vol pour un aéroport.
LE début du programme consiste à laisser l'utilisateur entrer les infos du vol :
Son code, le lieu de départ, le lieu d'arrivée, le jour et l heure de départ et le jour et l heur d'arrivée. Le problème arrive quand il entre le jour et l heure de départ (genre lundi 11:15) et ensuite pareil pour l'arrivée, voila mon problème :
avec deux cin ça marche pas puisqu'il y a un espace, alors je pensais utiliser le getline.
dans mon code ça donne :
cout << "Jour et heure de départ : "; cin>>ws; getline(cin, str1); //cin.ignore();
cout << "Jour et heure d'arrivée : "; cin>>ws; getline(cin, str2); //cin.ignore();
Ceci ne fonctionne pas, meme avec les cin.ignore()...
Merci déjà de m'aidé,
Flo


A voir également:

4 réponses

Isachi Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   6
 
Tu devrais essayer de demander d'abord le jour avec un type string puis l'heure et les minutes dans 2 int différent. Sauf si tu maîtrise la POO. Dans ce cas tu fais une classe qui prends en paramètres heures, minutes et jour.
Je fais peut être faux vu que j'ai que 14ans
0
Joker
 
Certes mais je n'ai pas le droit justement je dois séparer cette ligne "Lundi 14:00" en une string lundi et une struct horaire 14:00... Mettre tout ça dans une struct vol et afficher ensuite le vol.

Bref j'ai juste un bug avec ces deux getline et je comprend pas pourquoi ça marche PAS...
0
Isachi Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   6
 
Désolé si j'ai pas pu aider mais je suis vraiment jeune et inexpérimenté.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

cin>>ws; getline(cin, str1);
Après cin>>ws; il va rester un '\n' dans le buffer qui sera lu dans getline(cin,str1); Dis autrement, t'auras l'impression que le getline(cin, str1) ne fait rien.
Ce qu'il faut faire, c'est de supprimer le '\n' du buffer juste après cin>>ws;. Par exemple en faisant : cin.ignore(numeric_limits<streamsize>::max(), '\n');

N'oublie pas de le faire pour str1 et str2.
Cdlt,

Google is your friend
0
Joker
 
D'accord merci beaucoup ;)
A tout bientot je pense x)
FLo
0