粽锁粥汁,C++提供了typeid关键字以便我们查看变量类型。typeid()会返回一个type_info类型的对象,其中使用最多的就是name()方法。
今有一人,欲验其虚实,学其方法,typeid以求类型,调用name()方法以求名称,输出于cout之流,见乃乱码,不知其为何物也。
/**
* 操作系统:Windows 7 x64
* 编译器:MinGW-W64 (gcc version 8.1.0) - g++
*/
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
cout << typeid(int).name() << endl
<< typeid(string).name() << endl
<< typeid(double).name() << endl;
int a;
string s;
cout << typeid(a).name() << endl
<< typeid(s).name() << endl;
return 0;
}
输出如下:
i
NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
d
i
NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
这到底是怎么回事?怎么解决问题,让name()正常输出?
我的也这样,烦死啦。。。。
我解决了,原因是编译器不同导致显示的内容不同。
vs之前能够正常显示,是因为vs用的不是g++,这篇文章能够解决问题
https://blog.csdn.net/wangqingchuan92/article/details/119380895
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html