#include <QCoreApplication>
#include <iostream>
#include <typeinfo>
class Test {
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Test *test;
std::cout << typeid(test).name();
return a.exec();
}
输出结果为:
P4Test
g++编译器打印的类型名称比较晦涩,如何使用g++打印清晰的类型名称?
#include <QCoreApplication>
#include <iostream>
#include <typeinfo>
#include <string>
#include <cxxabi.h>
std::string getClearName(const char* name)
{
int status = -1;
char* clear_name = abi::__cxa_demangle(name, NULL, NULL, &status);
const char* demangle_name = (status==0) ? clear_name : name;
std::string ret_val(demangle_name);
free(clear_name);
return ret_val;
}
class Test {
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Test *test;
std::cout << getClearName(typeid(test).name()) << std::endl;
return a.exec();
}
输出结果为:
Test*