一般要用到头文件
#include<typeinfo>
像python这样的语言要判断一个变量类型是很简单的直接type(变量名)就可以。而C++中是这样用的:
#include<iostream>
#include<typeinfo>
using namespace std;
int main(){
enum Color {red,yellow,blue,white,black};
enum Day {Monday,Tuesday,Wendesday,Thursday,Friday};
Color color;
Day Mon=Monday;
int i,j,k;
char a,b,c;
double A,B,C;
cout<<"Type of color:"<<typeid(color).name()<<endl;
cout<<"Type of Mon:"<<typeid(Mon).name()<<endl;
cout<<"Type of i:"<<typeid(i).name()<<endl;
cout<<"Type of A:"<<typeid(A).name()<<endl;
cout<<"whether the type of i is int: "<<(typeid(int)==typeid(i))<<endl;
cout<<"whether the type of i is double: "<<(typeid(double)==typeid(i))<<endl;
return 0;
}
上面代码我们定义的变量类型有枚举类型(Color和Day),int,double,char,代码输出是:
Type of color:Z4mainE5Color
Type of Mon:Z4mainE3Day
Type of i:i
Type of A:d
whether the type of i is int: 1
whether the type of i is double: 0
这里可以看出typeid().name()输出的类型名是简称int是i,double是d,但是对于枚举类型是全称的。
如代码所示我们也可以直接使用判断语句来判断:(typeid(double)==typeid(i))