【问题标题】:Why does cin.ignore() request input?为什么 cin.ignore() 请求输入?
【发布时间】:2013-12-07 04:28:21
【问题描述】:

我发现了一些非常奇怪的行为。我是 C++ 新手,所以我觉得这很奇怪,在阅读 cin.ignore 上的文档后无法解释。

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello world!" << endl;
    cin.ignore(10000, '\n');
    return 0;
}

上面的代码接受输入。如果添加 int 测试;辛>>测试; cin.ignore 正上方,不接受输入。

【问题讨论】:

    标签: c++ cin


    【解决方案1】:

    当你添加一个整数的输入时,一个换行符(至少)会留在输入缓冲区中,然后被ignore读取。

    【讨论】:

    • 不太清楚你的意思......你能详细说明一下吗?
    • 假设用户输入“3.14”(不带引号),然后按回车键。然后输入缓冲区包含“3.14\n”(以 C++ 表示法)。读取float 会消耗“3.14”并留下“\n”。然后ignore 调用使用“\n”。
    • 这并不能解释为什么上面的代码会暂停并等待用户输入...我希望它只是“消耗”一个空缓冲区并继续前进。
    • 在普通输入操作期间输入缓冲区经常变空,然后发生的事情(当程序尝试进​​一步输入时)只是从输入源获取一个新行。 ignore 读取到指定的字符数或指定的终止符,以先到者为准。只需阅读the documentation
    • 啊,我明白了。我很感激!
    猜你喜欢
    • 2020-07-15
    • 2017-07-19
    • 1970-01-01
    • 2020-08-19
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    相关资源
    最近更新 更多