在Ctrl+Z(EOF)后如何继续从iostream::cin读取?("ignore"无效)

4
为什么在下面的程序中,当我们只为内部循环提供ctrl + z时,外部循环终止?
#include<iostream>
int main()
{
    string s1,s2;

    while(cin >> s1)
    {
        cout<<"In loop1\n";
        while(cin>>s2)
            cout<<"In loop 2\n";
        cin.ignore();
    }
}

我已经修改了主要问题。希望它仍然符合您的目标(循环只是次要影响)。 - user166390
2个回答

7
按下 Ctrl+z(在 Windows 上)会关闭标准输入流。一旦关闭,它就会一直保持关闭状态。当内部循环结束后,它不会自动重新打开。这实际上也没有必要。

他可能知道cin.ignore();可以清除EOF状态,现在想知道为什么它不能在那之后继续读取。 - Mooing Duck
2
我们可以提供什么输入来终止内部循环? - user1232138

3

Ctrl-Z将cin置于错误状态,因此cin.ignore无法起作用。请尝试使用cin.Clear()。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接