g++编译器打印的类型名比较晦涩,vc编译器打印的类型名很清晰,参考这里。下面给出一个用g++打印清晰类型名的一个示例。
1、源码
#include <string>
#include <iostream>
#include <typeinfo>
using namespace std;
#include <cxxabi.h>
const string GetClearName(const char* name)
{
int status = -1;
char* clearName = abi::__cxa_demangle(name, NULL, NULL, &status);
const char* const demangledName = (status==0) ? clearName : name;
string ret_val(demangledName);
free(clearName);
return ret_val;
}
int main()
{
int num = 3;
cout << "num => "
<< typeid(num).name()
<< " => "
<< GetClearName(typeid(num).name())
<< endl;
cout << "double => "
<< typeid(double).name()
<< " => "
<< GetClearName(typeid(double).name())
<< endl;
return 0;
}
2、截图
***
转载于:https://blog.51cto.com/walkerqt/1241224