Lire des entiers puis une ligne de texte en C ++
Question
Je lis des entrées dans un programme C ++. Quelques entiers, puis une chaîne. Lorsque j'essaie de lire la chaîne avec getline (cin, stringname);
, il ne lit pas la ligne saisie par l'utilisateur: une ligne vide s'affiche à partir du moment où l'utilisateur a appuyé sur . Entrez après avoir saisi les nombres entiers.
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 remplisse pas avec le & enter; enter " clé?
C'est une entrée normale qui reçoit, rien de spécial en haut du code,
J'ai eu un problème comme ça mais j'ai oublié la solution
Je dois effacer le code cin
afin que la chaîne ne soit pas remplie par " enter " clé.
La solution
Je pense que votre cintre ne lit pas la nouvelle ligne avant la phrase. cin ignore les espaces et les arrête de lire un nombre lorsqu'il rencontre un nombre non numérique, y compris les espaces.
Donc:
std::cin >> num1;
std::cin >> num2;
std::cin.ignore(INT_MAX, '\n'); // ignore the new line which follows num2
std::getline(std::cin, sentence);
pourrait fonctionner pour vous