C++中判断数据的类型

       在实际的项目中经常要进行数据类型的转换,特别是字符串转成数字或者数字转字符串,而在进行数据类型转换之前要先知道数据的类型。
这时如何判断一个数据的数据类型这个问题就自然而然的遇到了。在本人几次遇到这个问题的情况下,这次来做一个总结。

1.typeid

	typeid这个函数在头文件typeinfo.h中,在使用这个函数时要加上头文件:#include<typeinfo>。但是本人在C++14下不加头文件可以,可能是C++将它写入了标准库里面。
#include <iostream>
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()函数来将错误位清除。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐