c++ - typeid 的可读形式?

标签 c++ c++11 typeid

是否有编译器以可读的方式返回类型的名称(或提供该功能或工具的库)。本质上,我想要的是与您在源代码中编写的类型表达式相对应的字符串。

最佳答案

 typeid(var).name()

是您正在寻找的。虽然输出因编译器而异...对于 gccint 的输出是 i,对于 unsignedj,例如。这是一个小测试程序:

#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;
}

另见这个问题:typeid(T).name() alternative in c++11?

关于c++ - typeid 的可读形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11709455/

相关文章:

c++ - 动态创建 std::vector//创建指向 vector 的指针

c++ - 是否可以对参数包进行类型定义?

python - 将基数设置为未确定大小的对象

c++ - 可以重新排序对 volatiles 的访问吗?

c++ - 为什么函数上的 typeid 可以,而 sizeof 不行

c++ - 在颜色空间之间转换图像

c++ - 在函数模板中使用 lambda,无法推断类型,makeSet() 用例

c++ - 制作一个优化未使用部分的元组样式类

c++ - 'typeid' 与 C++ 中的 'typeof'

c++ - MPI 发送自定义序列化对象(更通用的代码)