c++ 如何判断输入数据是否为 int型?

2024-11-24 03:22:49
推荐回答(2个)
回答1:

如果读入1个int 成功,输入数据就是 int, 否则 就 不是 int.
c++ 若用 c 风格 读入 整型,可以用 读语句 返回值 判断:
#include
using namespace std;
#include
int k, r;
r = scanf("%d",&k);
if (r==1) printf ("good\n"); else printf("error\n");
-----------
c++ 风格 读入 整型, 用输入流 状态 判断:
int i;
cin >> i;
if (cin.good()==1) cout << i << endl;
else cout <<"input err" << endl;
用成员函数 cin.good() 是否为 1 判断。
-----
例如:
输入 123 , 读入 123, 数据正确。
输入 xab , 数据错误
输入 123.456,读入 123, 数据正确。余下的 .456 留在输入流缓冲区。
-----
如果输入数据是 16进制,c 风格 用 r = scanf("%x",&k); c++ 要设 hex ;
用同样方法判断 数据是否正确。

回答2:

检查cin.fail():

#include
using namespace std;

int main()
{
int a;
cin >> a;
if(cin.fail()) {// 或者if(!cin)
cerr << "invalid input!\n";
cin.clear(); // 对了还要加上这句
}
}