开发者

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 开发者_StackOverflow社区where I'm going wrong? FWIW, I'm using Visual Studio 2010 Professional.


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.


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜