2016-01-01 4 views
1

При проверке typeinfo строки в C++ он возвращает странный вывод 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

Array из 19 символов, может быть? – LogicStuff

+3

_string literal_ не является 'std :: string'. –

ответ

2

type_info::name не требуется ничего возвращать удобочитаемое. Это имя, определяемое реализацией. Не требуется даже . Таким образом, точное значение этого зависит от реализации. Кроме того, вы не можете получить A19_c из любой другой реализации.

+0

, но для булевых, символов и целых чисел и удвоений я все равно получаю 'b',' c', 'i' и' d', правильно? – alvas

+2

@alvas Как указано, это реализация определена. Нет гарантии, что имя вернется, независимо от используемых типов. – PaulMcKenzie

Смежные вопросы