cin读取数字时遇到字符
当定义一个int变量,用cin输入时,如果输入的是一个字符,会发生以下4中情况:
1.n的值变成0
2.不匹配的输入被留在输入流中
3.cin对象的一个错误标记被设置,即cin.fail()返回true
4.对cin的方法调用返回false,即(cin>>n)返回的是false
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
//也可以用 if(cin>>n) cout<"yes\n";用这条语句的时候,前面就不需要cin>>n了
if(cin.fail()==false) cout<<"yes\n"; //输入的是数字
else cout<<"no\n"; //输入的不是数字
return 0;
}
当发生这种情况时,cin对象的一个错误标记被设置。设置这个标记后,不再进行输入。若要后续还想再输入,可以使用cin.clear()清空标记。如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
if(cin>>n) cout<<"yes\n";
else cout<<"no\n";
cin.clear(); //清空标记
cin.get(); //吸收上一次输入的最后的回车
int b;
cin>>b;
cout<<b<<endl;
return 0;
}