1

我在尝试在 STL 映射中打印成对的 int 和字符串时遇到问题:

这是我使用的代码:

#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:二进制“<<”:未找到采用“std::string”类型右侧操作数的运算符(或没有可接受的转换)

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

4

1 回答 1

6

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

于 2013-05-06T13:30:35.473 回答