程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> typeid().name() 返回值

typeid().name() 返回值

編輯:C++入門知識

它的輸出是個字符指針,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。

較復雜的情形:
假設定義了以下的物件
template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
class Matrix
類型Eigen::Matrix<complex<float>, 3, 3, 0, 3, 3>:輸出N5Eigen6MatrixISt7complexIfELi3ELi3ELi0ELi3ELi3EEE,注意int _Rows = 3是輸出Li3E。
類型Eigen::Matrix<double, -1, -1, 0, -1, -1>:輸出N5Eigen6MatrixIIdELin1ELin1ELi0ELin1ELin1EEE,其中負號是以n輸出。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved