我有以下代码
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。
答案 0 :(得分:14)
没有错。
首先,那些教科书应该告诉你name()
的结果是实现定义的,很可能是""
。其次,该类型是 std::string
。 std::string
类型只是std::basic_string
与char
和朋友的typedef。
答案 1 :(得分:4)
std :: string是char
类模板的std::basic_string
特化的别名。您看到输出的满口是包含所有模板参数的完整类型名称。