user360907
user360907

Reputation:

typeid operator in C++

I have the following code

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

According to the various textbooks and pieces of documentation I've read about the typeid operator, I should expect to read

"Data type = string"

as the output. Instead, I get the following

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

Does anyone have any idea where I'm going wrong? FWIW, I'm using Visual Studio 2010 Professional.

Upvotes: 4

Views: 811

Answers (2)

Steve Townsend
Steve Townsend

Reputation: 54178

std::string is an alias for the char specialization of the std::basic_string class template. That mouthful you see output is the full typename including all template parameters.

Upvotes: 4

GManNickG
GManNickG

Reputation: 504273

Nothing is wrong.

Those text books, first of all, should have told you the result of name() is implementation-defined, and could very well be "". Secondly, that type is std::string. The std::string type is just a typedef of std::basic_string with char and friends.

Upvotes: 14

Related Questions