问题:c++ 使用typeid().name()时输出是一个字母,而不是类型的全称。
注:已知会出现这个现象的有Dev-C++、codeblocks
单个字母:
单个字母输出如下:
代码如下:
#include <iostream>
using namespace std;
#include <string>
#include<typeinfo>
int main()
{
int i = 3;
cout<<typeid(i).name()<<endl;
return 0;
}
改为全称:
改成全称要加上头文件
#include <cxxabi.h>
使用时改成
cout<<abi::__cxa_demangle(typeid(i).name(),0,0,0 )<<endl;
完整输出如下:
完整代码如下:
#include <iostream>
using namespace std;
#include <string>
#include<typeinfo>
#include <cxxabi.h> //使用abi
int main()
{
string s("hello");
auto i = s.size();
cout<<abi::__cxa_demangle(typeid(i).name(),0,0,0 )<<endl;
return 0;
}