【发布时间】:2015-04-22 09:08:22
【问题描述】:
我想忽略cin 中的所有字符以刷新此答案中的cin:How to get rid of bad input one word at a time instead of one line at a time?
但我发现,如果我写了,程序似乎挂起等待输入:
cin.ignore(std::numeric_limits<std::streamsize>::max());
如果我使用 '\n' 分隔符,它会正确刷新 cin:
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
我的问题是,为什么我不能忽略直到 EOF?为什么我必须提供分隔符?
【问题讨论】:
-
你可以忽略直到EOF。您确实忽略了直到 EOF。你只是没有意识到这实际上意味着什么。 ;-)
-
您是否通过从文件或其他有限源重定向,或者按 CTRL-D 或您平台上的任何其他方式使其到达
cin的末尾?否则,它将等待输入永远被忽略。 -
那么你的愿望是丢弃当前已经输入的所有字符,然后开始正常阅读?这是个好问题。
-
@MarkRansom 对。看来答案比我想象的要清楚,只是没看懂
ignore。