C ++中的typeid运算符

时间:2010-09-15 19:26:26

标签: c++ visual-c++ typeid

我有以下代码

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> >

有谁知道我哪里出错了? FWIW,我正在使用Visual Studio 2010 Professional。

2 个答案:

答案 0 :(得分:14)

没有错。

首先,那些教科书应该告诉你name()的结果是实现定义的,很可能是""。其次,该类型 std::stringstd::string类型只是std::basic_stringchar和朋友的typedef。

答案 1 :(得分:4)

std :: string是char类模板的std::basic_string特化的别名。您看到输出的满口是包含所有模板参数的完整类型名称。