2016-01-01 114 views
1

當在C++中檢查字符串的typeinfo時,它返回一個奇怪的輸出A19_c,A19_c是什麼意思?檢查字符串的typeinfo時出現奇怪的輸出

當作爲引用類型字符串顯式初始化時,它可以查找並返回一個Ss

#include <iostream> 
#include <typeinfo> 
using namespace std; 

int main() { 
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */ 

    std::string mystr = "I am a code monkey"; 
    cout << typeid(mystr).name() << endl; 
    cout << typeid("I am a code monkey").name() << endl; 
    return 0; 
} 

[出]:

Ss 
A19_c 
+4

數組可能包含19個字符? – LogicStuff

+3

_string literal_不是'std :: string'。 –

回答

2

type_info::name不要求任何回報人類可讀。它是一個實現定義的名稱。它甚至不需要是獨特的。所以它的確切含義取決於實現。此外,您不能保證從其他任何實施中獲得A19_c

+0

但對於布爾,字符和整數和雙打,我仍然會得到'b','c','i'和'd',對吧? – alvas

+2

@alvas如上所述,它是實現定義的。無論使用何種類型,都無法保證會返回什麼名稱。 – PaulMcKenzie