【发布时间】:2020-04-20 04:53:12
【问题描述】:
int test, flag = 0;
cin >> test;
while (test--)
{
if (flag == 0)
cin.ignore(256, '\n'); // using because of whitespace reading due to cin
string check;
getline(cin, check);
checkPangram(check, check.size());
flag++;
}
如果我删除第 4 行,那么这个程序不会读取几个测试用例字符串,所以我使用标志值在启动时只执行第 4 行一次。 如果你能帮我找到任何通用方法,读取字符串(带空格),这样我即使在 cin 或 getline 之后也可以读取而不会丢失任何输入
【问题讨论】:
-
我会在这里查看更多理由。 When and why do I need to use cin.ignore in c
-
一般
ignore在流中留下不需要的数据的操作之后,而不是在下一个操作之前。如果您之前ignore以防流中有不需要的数据,迟早您会忽略您想要的数据,因为流中没有您不想要的数据。更通用的是,如果您将相关操作紧密结合在一起,代码的意图就会变得更加明显且更易于使用。
标签: c++