【问题标题】:How to clear output buffer for int [duplicate]如何清除 int 的输出缓冲区 [重复]
【发布时间】:2020-12-29 01:42:01
【问题描述】:

我是 C++ 的新用户,但遇到了一个问题。

如果 int 变量“x”的输入不是数字,那么 c++ 似乎会跳过与 char 变量“y”关联的 cin。我尝试使用 cin.ignore 和 cin.clear,但它们似乎不起作用。当 int 'x' 的值不是数字(例如 'a' '*' '')时,关于如何使程序仍然询问 char 'y' 的值的任何想法?

#include <iostream>
using namespace std;
int main()
{
    int x;
    char y;

    cout << "num: ";
    cin >> x;//int input

    cout << endl;//blank line

    cout << "char: ";
    cin >> y;//char input

    cout << endl;//blank line
    return 0;
}

【问题讨论】:

标签: c++ char integer cin


【解决方案1】:

您是否传递参数以忽略? 第一个参数是要忽略的最大字符数,第二个参数是在找到它后应该停止忽略的标志(在下面的示例中,我已经输入了'\n'

cin.clear();
cin.ignore(1000, '\n');

总而言之,代码说:最多清除 1000 个字符或最多清除第一个 '\n'。

【讨论】:

  • cin.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(), '\n'); 将是清除此问题的惯用方法 - 或通过使用 std::getline() 逐行阅读并从 std::istringstream 中提取来完全避免它。
  • 诚然,如果您和行尾之间有一万亿个字符,则可能不值得全部解析。通常你可以ignore 几百个,然后把文件写成完全ed。
猜你喜欢
  • 2020-05-16
  • 2011-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 2011-12-15
相关资源
最近更新 更多