【问题标题】:Resume reading from iostream::cin after Ctrl+Z (EOF)? ("ignore" doesn't work)在 Ctrl+Z (EOF) 之后继续从 iostream::cin 读取? (“忽略”不起作用)
【发布时间】:2012-04-13 20:38:49
【问题描述】:

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

【问题讨论】:

  • 我改变了主要问题。我希望它仍然符合您的目标(循环是次要效果)。

标签: c++ stdin


【解决方案1】:

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

【讨论】:

  • 他大概知道cin.ignore();清除了EOF状态,想知道为什么之后就不能继续阅读了。
  • 我们可以提供什么输入来仅终止内部循环?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    相关资源
    最近更新 更多