95463


mapでデータを格納し、ターミナルから入力した文字列がキーとして登録されていれば値を返すという問題をやっています。  
現状のコードで取り敢えずやりたいことはできていますが、elseの中の値を出力する部分を `*it` とするとコンパイルできません。

以下のようなエラーが出ており、オペランドの型がおかしいのはわかるんですが、調べてみてもよくわかりません。

そもそも、例えばターミナルからcatと入力した場合のitには、マップAni[]の中のキーE_ani[0]のイテレータが入っているという理解であっていますか？  
vectorやlistみたいには出力できないということでしょうか？それともitの使い方が間違っているのでしょうか？

**エラーメッセージ:**

[code]

    no match for ‘operator<<’ (operand types are ‘std::basic_ostream<char>’ and ‘std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> >’)
    
[/code]

**ソースコード:**

[code]

    #include <iostream>
    #include <string>
    #include <map>
    
    using namespace std;
    
    int main()
    {
        string name;
        map<string, string> Ani;
        map<string, string>::iterator it;
        string E_ani[] = {"cat", "dog", "bird","tiger"};
        Ani[E_ani[0]] = "猫";
        Ani[E_ani[1]] = "犬";
        Ani[E_ani[2]] = "鳥";
        Ani[E_ani[3]] = "トラ";
        cout << "英語で動物の名前を入力してください : 
        ";
        cin >> name;
        it = Ani.find(name);
        if (it == Ani.end())
        {
             cout << "対応するデータは登録されていません" << endl;
        }
        else
        {
             cout << "「" << Ani[name]*ここの値* << "」です。"<< endl;
        }
        return 0;
    }
    
[/code]


CC BY-SA 4.0
2023-07-04T09:57:49.287
95460
2023-07-04T12:49:41.253
2023-07-04T11:45:25.727
3060
52497
question
c++
C++でmapのイテレータを使って出力できません。


エラーメッセージは、「`std::basic_ostream<char>` (`std::cout`のこと)と`std::pair<std::string,
std::string>` (`*it`のこと) に対応する `<<` がないぞ」と言っています。

`std::pair` のそれぞれの要素の表示を試してみてください。`<< it->first` とか `<< it->second` とか。


CC BY-SA 4.0
2023-07-04T12:49:41.253
95463
2023-07-04T12:49:41.253
3475
95460
answer