C++ 如何重载输出和输入运算符?

C++ 如何重载输出和输入运算符?,c++,operator-overloading,C++,Operator Overloading,这是一个主题,在我后来发现的另一篇文章中以概括的方式进行了介绍: 但具体来说,这里有一小段代码: class wordchecklist { string name,type; unsigned int stats; }; 我想做的是重载输出操作符,这样下面的代码就可以工作了 编辑:请记住它包含私有成员,因此我更希望通过创建某种类型的成员函数来实现这一点: ofstream data(database.txt,ios::app); data<<wordcheckli

这是一个主题,在我后来发现的另一篇文章中以概括的方式进行了介绍:

但具体来说,这里有一小段代码:

class wordchecklist
{
    string name,type;
    unsigned int stats;
};
我想做的是重载输出操作符,这样下面的代码就可以工作了

编辑:请记住它包含私有成员,因此我更希望通过创建某种类型的成员函数来实现这一点:

ofstream data(database.txt,ios::app);
data<<wordchecklist;
data.close();
因此,我的database.txt文件包含:

mywordchecklistname mywordchecklisttype mywordcheckliststats


输入运算符也是如此…

您必须定义一个非成员函数:

std::ofstream &operator <<(std::ofstream &stream, const wordchecklist &data)
{
     stream << data.name << " " << data.type << " " << data.stats << std::endl;
     return stream;
}
对::operator>>执行相同的操作


ProTip:在标识符中使用CamelCaps或under_分数,以便您的类有一个可读的名称。

您可能会首先查找与之相关的内容,将>>放在一起或多或少是一种既定惯例,当然,运算符>>通常比operator@JamesKanze1.正当但是,如果我们将::operator>>解释为位于任何名称空间中的运算符,会怎么样?2.如果我们假设输入文件格式与Operator编辑的格式相同,那么问题是:如何处理私有数据成员?std::getline将无法工作,除非他的