C++ 中如果想要判断变量的数据类型,可以使用 typeid
运算符。该运算符返回一个 std::type_info
类型的对象,可以使用 name()
方法获取其名称从而确定变量的类型,例如:
#include <iostream>
#include <typeinfo>
using namespace std;
int main() {
int a = 123;
float b = 3.14;
bool c = true;
char d = 'A';
string e = "Hello World";
cout << typeid(a).name() << endl; // 输出 "i" 表示"int"
cout << typeid(b).name() << endl; // 输出 "f" 表示"float"
cout << typeid(c).name() << endl; // 输出 "b" 表示"bool"
cout << typeid(d).name() << endl; // 输出 "c" 表示"char"
cout << typeid(e).name() << endl; // 输出 "Ss" S表示 std标准,s表示string
return 0;
}
在上面的代码中,我们使用 typeid
运算符获取了变量 a
、b
、c
、d
、e
的类型信息,并输出了它们的类型名称。需要注意的是,name()
返回的字符串值不一定对应于 C++ 语言规范中的任何东西,也不必是可打印的,所以不应该将其用于除了打印外的其他方面。
此外,假如我们需要判断变量的类型是否与某个类型相同,例如判断 a
是否为 int
,我们可以将 typeid
返回的结果与 typeid(int)
进行比较,例如:
#include <iostream>
#include <typeinfo>
using namespace std;
int main() {
int a = 123;
cout << (typeid(a) == typeid(int)) << endl; // 输出 "1"
return 0;
}
在上面的代码中,我们使用括号将 typeid(a)
和 typeid(int)
括起来,使用 ==
运算符比较它们的返回值是否相等,得到了一个布尔值 true
,表明 a
是一个 int
类型的变量。
需要注意的是,由于使用 typeid
运算符在运行时才能确定变量的类型,因此它的性能开销较大。在代码中频繁使用 typeid
可能会影响程序的性能表现,所以应该尽量避免滥用。