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é.

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top