是否有编译器以可读的方式返回类型的名称(或提供该功能或工具的库)。本质上,我想要的是与您在源代码中编写的类型表达式相对应的字符串。
最佳答案
typeid(var).name()
是您正在寻找的。虽然输出因编译器而异...对于 gcc
,int
的输出是 i
,对于 unsigned
是 j
,例如。这是一个小测试程序:
#include <iostream>
#include <typeinfo>
struct A { virtual ~A() { } };
struct B : A { };
class C { };
class D : public C { };
int main() {
B b;
A* ap = &b;
A& ar = b;
std::cout << "ap: " << typeid(*ap).name() << std::endl;
std::cout << "ar: " << typeid(ar).name() << std::endl;
D d;
C* cp = &d;
C& cr = d;
std::cout << "cp: " << typeid(*cp).name() << std::endl;
std::cout << "cr: " << typeid(cr).name() << std::endl;
int e;
unsigned f;
char g;
float h;
double i;
std::cout << "int:\t" << typeid(e).name() << std::endl;
std::cout << "unsigned:\t" << typeid(f).name() << std::endl;
std::cout << "char:\t" << typeid(g).name() << std::endl;
std::cout << "float:\t" << typeid(h).name() << std::endl;
std::cout << "double:\t" << typeid(i).name() << std::endl;
}
关于c++ - typeid 的可读形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11709455/