运算符重载以显示用户定义的数据类型

Operator Overloading to display User defined data types

我在研究结构,遇到了这个问题。

#include<iostream>
#include<string>
#include<vector>


using namespace std;

struct entry
{
    string name;
    int number;
};


int main()
{
    vector<entry> adres{{"Noname",212345},{"Yesname",7564745}};

    for(x:adres)
    {
        cout<<x<<endl;
    }

}

这只是一个测试代码!

所以我创建了一个结构并想在我的向量中使用它。 C++ 给了我这个错误

error: no match for 'operator<<' (operand types are 'std::ostream {aka std::basic_ostream<char>}' and 'entry')|

经过一番搜索后,我发现我需要重载 << 运算符才能使用我定义的数据类型输出我的 Vector。

我的问题是我该怎么做?我怎样才能重载“<<”以便我可以输出我的矢量。我知道运算符重载的概念,但这个概念似乎太令人困惑了。 有什么方法可以只使用“<<”符号来输出用户定义的类型吗?

您可以像这样重载 << 运算符。

std::ostream& operator<<(std::ostream& out, const entry& e) {
    out << "Name: " << e.name << ", Number: " << e.number;
    return out;
}