STL在C ++中映射错误C2679

时间:2013-05-06 13:28:25

标签: c++ stl containers

我在尝试打印出一对int&时遇到问题STL地图中的字符串:

这是我使用的代码:

#include <iostream>
#include <utility>
#include <map>

using namespace std;
typedef map<int,string> intID;

int main(){

    intID ID;
    ID.insert(pair<int,string>(123,"studentname1"));
    ID.insert(pair<int,string>(124,"studentname2"));
    ID.insert(pair<int,string>(122,"studentname3"));

    intID::iterator IDIter;
    for(IDIter = ID.begin();IDIter != ID.end();++IDIter){
        cout <<"ID: " << IDIter->first <<", Name: " << IDIter->second << endl;
    }
}

错误发生在", Name: " << IDIter->second部分,<<加下划线说“没有运算符匹配这些操作数”

编译错误是:

  

错误1错误C2679:二进制'&lt;&lt;' :找不到哪个运营商需要   'std :: string'类型的右侧操作数(或者没有可接受的   转化率)

我试图打印出该对的第二个成员(学生名) 我是STL映射的新手,所以我不确定我做错了什么,我需要改变什么?

1 个答案:

答案 0 :(得分:6)

您需要包含<string>标头。您只能通过其他标头中的附带包含来使用std::string类型。你不能依赖这个。包含<string>也会带来operator<<的重载,允许您输出字符串。