这是一个比较标准的写法,你参考一下:
#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;
}
#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;
}
当输入的不是int类型的数时输入流就结束了。观察下面循环就明白:
int a;
while(cin >> a )
{}
我认为程序直接出错就结束了说法有点不妥,程序直接结束的话应该没有输出才对。
晕。。老大。。你的问题根本就不是cin.clear()。。。你既然给变量a和b定义为int型当然只能输入数字。。你输入字母程序直接出错就结束了