2008-10-02 4 views
1

Je lis une entrée dans un programme C++. D'abord quelques entiers, puis une chaîne. Lorsque j'essaie de lire la chaîne avec getline(cin,stringname);, il ne lit pas la ligne que l'utilisateur tape: à la place, j'obtiens une ligne vide, à partir du moment où l'utilisateur a appuyé sur Entrez après avoir tapé les entiers.Lecture de certains entiers puis d'une ligne de texte en C++

cin>>track.day; //Int 
cin>>track.seriesday; //Int 
getline(cin,track.comment); //String 

Comment puis-je effacer le cin (cin.clear() ne fonctionne pas) afin que la chaîne ne se remplir avec la touche « enter »?

Il est une entrée normale réception, rien de spécial en haut du code, j'avais un problème comme ça, mais j'ai oublié la solution je dois effacer le cin someway de sorte que la chaîne ne sera pas rempli de « entrer "clé.

+0

Votre question est difficile à comprendre. Précisez s'il vous plaît. – Lev

+0

Et fournir un extrait de code – Kena

+0

Pouvez-vous s'il vous plaît coller le code où vous avez lu les entiers? Aussi, quel compilateur utilisez-vous, et sur quelle plateforme? – dguaraglia

Répondre

2

Je pense que votre cin des ints ne lit pas la nouvelle ligne avant la phrase. Cin saute les espaces blancs et arrête de lire un nombre quand il rencontre un non-chiffre, y compris un espace.

Alors:

std::cin >> num1; 
std::cin >> num2; 
std::cin.ignore(INT_MAX, '\n'); // ignore the new line which follows num2 
std::getline(std::cin, sentence); 

peut travailler pour vous

+0

Oui ça marche merci beaucoup! –

Questions connexes