跳过第一次调用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);
答案 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说过。我想我应该在下次使用其中一个,而不是两个。