c++ 关于cin.clear()的一点小问题

2025-04-16 13:12:53
推荐回答(4个)
回答1:

这是一个比较标准的写法,你参考一下:
#include
#include
using namespace std;
int main()
{
int a = 0 , b = 1;
cin >> a ;
cout << a << endl ;
if(cin.fail())//如果发生输入错误的话
{
cin.clear(); //清除cin流的错误状态
cin.ignore();//提取并舍弃错误输入
}
cin >> b ;
cout << b << endl;
}

回答2:

#include

using namespace std;

int main()
{
int a = 0 , b = 1;
cin >> a ; //如果此时给a输入一个字母 为什么就不给我给b输入的机会?
//注意:输入字母时,流是无效的
cout << a << endl ;
fflush(stdin);//加入这句清除缓冲区。先清除再设置流状态
cin.clear();
cin >> b ; //如果给a输入一个字母 这一句会自动跳过 为什么?
cout << b << endl;
return 0;
}

回答3:

当输入的不是int类型的数时输入流就结束了。观察下面循环就明白:
int a;
while(cin >> a )
{}

我认为程序直接出错就结束了说法有点不妥,程序直接结束的话应该没有输出才对。

回答4:

晕。。老大。。你的问题根本就不是cin.clear()。。。你既然给变量a和b定义为int型当然只能输入数字。。你输入字母程序直接出错就结束了