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' 型の右側のオペランドを取る演算子が見つかりません (または、受け入れ可能な変換がありません)

ペアの 2 番目のメンバー (studentname) を印刷しようとしています。STL マッピングは初めてなので、何が間違っているのかわかりません。何を変更する必要がありますか?

4

1 に答える 1

6

<string>ヘッダーを含める必要があります。std::string他のヘッダーから偶発的に含めることによってのみ、タイプを使用できました。これに頼ることはできません。インクルードすると、文字列を出力できるようにする<string>のオーバーロードも取り込まれます。operator<<

于 2013-05-06T13:30:35.473 に答える