typeid().name()
可以返回变量、函数、类的数据类型名
输出不完整名称
#include<iostream>
#include <typeinfo>
using namespace std;
int main(){
typedef char * Strings[10]; Strings 代表 char *[10]
char * a[10];
Strings ml; Strings ml 就相当于 char *ml[10];
cout << typeid(a).name() << endl;
cout << typeid(Strings).name() <<endl;
cout << typeid(ml).name() <<endl;
}
输出:
A10_Pc
A10_Pc
A10_Pc
输出完整名称
要加上#include <cxxabi.h>
这个头文件。
#include<typeinfo>
#include<iostream>
#include <cxxabi.h> // 使用abi
using namespace std;
int main(){
typedef char * Strings[10];
char * a[10];
Strings ml;
cout<<abi::__cxa_demangle(typeid(a).name(),0,0,0 )<<endl;
cout<<abi::__cxa_demangle(typeid(Strings).name(),0,0,0 )<<endl;
cout<<abi::__cxa_demangle(typeid(ml).name(),0,0,0 )<<endl;
}
输出:
char* [10]
char* [10]
char* [10]