不能 cin.ignore 直到 EOF?
Cannot cin.ignore till EOF?
我想忽略 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?为什么我必须提供分隔符?
ignore
函数名称有点误导。它实际上做了什么 read 和 discard 输入,直到找到终止符。这是阻塞读取。
在您的情况下,无论您使用 cin
(默认情况下是 stdin
)的任何输入流都不会提供文件结束条件,因此 ignore
read/discard 循环永远阻塞。
我想忽略 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?为什么我必须提供分隔符?
ignore
函数名称有点误导。它实际上做了什么 read 和 discard 输入,直到找到终止符。这是阻塞读取。
在您的情况下,无论您使用 cin
(默认情况下是 stdin
)的任何输入流都不会提供文件结束条件,因此 ignore
read/discard 循环永远阻塞。