1. 程式人生 > 其它 >C++返回一個變數型別的名稱

C++返回一個變數型別的名稱

typeid關鍵字

執行時獲知變數型別名稱,可以使用 typeid(變數).name()

但對於某些編譯器只會返回

#include<iostream>
#include<typeinfo>
#include<cxxabi.h>

using namespace std;

template<typename type>
inline string type_of(type &x)
{
    return abi::__cxa_demangle(typeid(x).name(),0,0,0);
}
 1 #include<iostream>
 2
#include<typeinfo> 3 #include<cxxabi.h> 4 5 using namespace std; 6 7 template<typename type> 8 inline string type_of(type &x) 9 { 10 return abi::__cxa_demangle(typeid(x).name(),0,0,0); 11 } 12 13 unsigned long long a; 14 static short b; 15 __int128 c; 16 17 inline void
d(int e,float f) 18 { 19 return; 20 } 21 22 struct node{ 23 char g; 24 char h[100]; 25 signed i; 26 }j[200]; 27 28 int k; 29 int *l=&k; 30 int **m=&l; 31 32 signed main() 33 { 34 register int n;//暫存器變數只能在棧空間中使用 35 cout<<"a: "<<type_of(a)<<endl; 36 cout<<"
b: "<<type_of(b)<<endl; 37 cout<<"c: "<<type_of(c)<<endl; 38 cout<<"d: "<<type_of(d)<<endl; 39 cout<<"j: "<<type_of(j)<<endl; 40 cout<<"j[1].g: "<<type_of(j[1].g)<<endl; 41 cout<<"j[100].h: "<<type_of(j[100].h)<<endl; 42 cout<<"j[201].h[101]: "<<type_of(j[201].h[101])<<endl; 43 cout<<"j[201].i: "<<type_of(j[201].i)<<endl; 44 cout<<"k: "<<type_of(k)<<endl; 45 cout<<"l: "<<type_of(l)<<endl; 46 cout<<"m: "<<type_of(m)<<endl; 47 cout<<"n: "<<type_of(n)<<endl; 48 return 0; 49 }