在Ctrl + Z(EOF)后继续从iostream :: cin读取? (“忽略”不起作用)

时间:2012-04-13 20:38:50

标签: c++ stdin

为什么我们只为内循环提供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();
    }
}

2 个答案:

答案 0 :(得分:7)

按Ctrl + z(在Windows上)关闭标准输入流。一旦关闭,它就会保持关闭状态。内环完成后,它不会神奇地重新打开。这没有理由。

答案 1 :(得分:3)

Ctrl-Z将cin置于错误状态,因此cin.ignore会执行此操作。 尝试cin.Clear()代替。