C++中判断数据的类型

C++中判断数据的类型
在实际的项目中经常要进行数据类型的转换,特别是字符串转成数字或者数字转字符串,而在进行数据类型转换之前要先知道数据的类型。
这时如何判断一个数据的数据类型这个问题就自然而然的遇到了。在本人几次遇到这个问题的情况下,这次来做一个总结。
1.typeid
typeid这个函数在头文件typeinfo.h中,在使用这个函数时要加上头文件:#include。但是本人在C++14下不加头文件可以,可能是C++将它写入了标准库里面。
#include
using namespace std;
int main(){
auto a = 10;
if(typeid(a) == typeid(int)){
cout << “a的数据类型是:整型” << endl;
}
auto str1 = “Hello World”;
auto str2 = "Hello World"s;
if(typeid(str1) == typeid(const char*)){
cout << “str1的类型是:const char*” << endl;
}
if(typeid(str2) == typeid(string)){
cout << “str2的类型是:string” << endl;
}
}

这里值得注意的是str1的类型,在通常情况下,字符串的字面量的类型是const char*,可以通过用户自定义的类型将字符串字面量转换为string。即在字符串的后面加‘s’。

2.cin判断输入的数据
在标准输入时有时要判断输入的数据是否与定义的数据类型一致。这时可以使用cin.good()或者cin.fail()函数来判断是否出错。

#include <iostream>
using namespace std;
int main(){
    int a;
    cout << "请输入一个整数:";
    cin >> a;
    if(cin.good()){
        cout << "输入符合标准:" << a << endl;
    }
    else{
        cout << "输入的不是整数." << endl;
    }
}

如果出错了还要重新输入的话,需要用到cin.clear()函数来将错误位清除。


int v1;cin >> v1;
	if (cin.fail())//如果输入的不是整形
	{
		cin.clear();//把整形缓存清除
		string x; cin >> x;//把string类型的传入进来找到对应编号
		v1=G.locatenum(&G, x);
	}
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值