微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何清除 int 的输出缓冲区

如何解决如何清除 int 的输出缓冲区

我是 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;
}

解决方法

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。