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();
    }
}
4

2 回答 2

7

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

于 2012-04-13T20:41:36.580 回答
3

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

于 2012-04-13T20:52:38.250 回答