2016-01-01 83 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