C ++:getline被跳过用户输入

时间:2015-06-17 05:14:50

标签: c++ user-input

跳过第一次调用getline()但第二次调用正在运行。我做错了什么?

string animal, q;
cout << "Darn, I lost. What was is?";

getline(cin, animal);//this is being skipped
cout << "Enter a question that is true for a(n) " << animal << " and false for a(n) " << question->value << ": ";
getline(cin, q);

3 个答案:

答案 0 :(得分:1)

在此之前看起来你还有其他一些输入。在getline之前输入一个getchar()来使用缓冲区存储的字符。

 getchar();
 getline(cin, animal);

答案 1 :(得分:0)

如果数据类似hello\n how are you? 并且您使用cin来阅读问候语,getline阅读how are you?它不会工作。因为getline会读取\n而不是以下行来解决此问题。您可以使用cin.ignore()忽略\n,然后使用getline阅读以下行。

答案 2 :(得分:-1)

我想通了,它在我的代码中的其他地方我使用标准“cin”而不是getline(),我想缓冲区中还有一些东西,比如@Sourav Kanta说过。我想我应该在下次使用其中一个,而不是两个。