typeid().name() 返回值

来源:互联网 发布:淘宝专柜代购怎么做 编辑:程序博客网 时间:2024/06/06 13:16

它的输出是个字符指针,C++没有规定固定格式,我用的C-Free格式如下:

它的输出格式为 [指针][名称空间][类别][模板]

[指针]:若是指针则输出P。

[名称空间]:若是std则输出St,若是自定义的名称空间则输出字符数及它的名字,并在开头加N,在结尾加E。

[类别]:若是自定义的名称空间则输出字符数及它的名字,若内建类型输出如下:
  bool:                     b
  char:                     c
  signed char:              a
  unsigned char:            h
  (signed) short (int):     s
  unsigned short (int):     t
  (signed) (int):           i
  unsigned (int):           j
  (signed) long (int):      l
  unsigned long (int):      m
  (signed) long long (int): x
  unsigned long long (int): y
  float:                    f
  double:                   d
  long double:              e

[模板] 类型模板以I开头,以E结尾;常数模板以L开头,以E结尾。只有整型变量(int、char之类的)才能做为常数模板,浮点数不行。

相信讲了这么多,楼主一定一头雾水。且让小弟举隅:
类型foo:输出3foo,因为foo有3个字符。
类型A*:输出P1A,因为A有1个字符,而此类型为A的指针。
类型std::complex<long double>:输出St7complexIeE。
类型test::really:输出N4test6reallyE。