оператор typeid в C ++ - PullRequest
       29

оператор typeid в C ++

4 голосов
/ 15 сентября 2010

У меня есть следующий код

int main()
{
    cout << "Please enter your name..." << endl;
    cin >> name;
    cout << "Data type = " << typeid(name).name() << endl;
    cin.get();
    return 0;
}

Согласно различным учебникам и документам, которые я читал об операторе typeid, я должен ожидать прочитать

"Data type = string"

в качестве выхода. Вместо этого я получаю следующее

class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >

Кто-нибудь знает, где я иду не так? Я использую Visual Studio 2010 Professional.

Ответы [ 2 ]

14 голосов
/ 15 сентября 2010

Нет ничего плохого.

Эти учебники, во-первых, должны были сказать вам, что результат name() определяется реализацией и вполне может быть "". Во-вторых, этот тип равен std::string. Тип std::string - это просто определение типа std::basic_string с char и друзьями.

4 голосов
/ 15 сентября 2010

std :: string является псевдонимом для char специализации шаблона класса std::basic_string. Вывод, который вы видите, - полное имя типа, включая все параметры шаблона.

...