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 に答える