C++ 如何使<&书信电报;运算符,以便将对象的数据写入文件?

C++ 如何使<&书信电报;运算符,以便将对象的数据写入文件?,c++,C++,我有一个piggyBank类型的对象,我需要将这个对象的数据写入一个文件,然后读取它。我知道如何写入/读取文本文件,但如何使所有者“”过载;此->余额=0;此->断开=假;} id=++nrOfObjects; } PiggyBank::PiggyBank(std::字符串名称,int startBalance){ {this->owner=name;this->balance=startBalance;this->break=false;} id=++nrOfObjects; } 字符串Pig

我有一个piggyBank类型的对象,我需要将这个对象的数据写入一个文件,然后读取它。我知道如何写入/读取文本文件,但如何使所有者“”过载;此->余额=0;此->断开=假;} id=++nrOfObjects; } PiggyBank::PiggyBank(std::字符串名称,int startBalance){ {this->owner=name;this->balance=startBalance;this->break=false;} id=++nrOfObjects; } 字符串PiggyBank::getOwnerName()常量{ 返回此->所有者; } void PiggyBank::setOwnerName(字符串名称){ 此->所有者=名称; } bool PiggyBank::isbreak(){ 返回此->已损坏; } int PiggyBank::getBalance(int和amount){ 如果(!坏了){ 金额=余额; 返回0; }否则{ 返回-1; } }
非常简单。使插入器操作员过载。把这个写进你的课堂:

friend std::ostream& operator << (std::ostream& os, const PiggyBank& pb) {
    return os << pb.owner << . . .   // Whatever you want

friend std::ostream&operator您需要
谢谢。你的回答解决了我的问题。我只是有一个小问题:如果我想读取有关对象的书面数据,我是否也必须重载istream?没问题。是的,你也可以这样做。当您重载它时,您将能够读取文件并将信息存储回您的对象中。你也可以使用cin来做同样的事情。我很高兴我能提供帮助!非常感谢。你的回答对我帮助很大。
#include "PiggyBank.h"
#include "readWrite.h"
#include <string>
#include <iostream>
using namespace std;

int PiggyBank::nrOfObjects = 0; // outside constructor


PiggyBank::getNrOfObjects(){

    return nrOfObjects;

}

PiggyBank::PiggyBank(void){
    {this->owner="";this->balance=0;this->broken=false;}
     id = ++nrOfObjects;

}


PiggyBank::PiggyBank(std::string name, int startBalance){
     {this->owner=name;this->balance=startBalance;this->broken=false;}
     id = ++nrOfObjects;
}

string PiggyBank::getOwnerName() const{
    return this->owner;
}
void PiggyBank::setOwnerName(string name){
    this->owner = name;
}
bool PiggyBank::isBroken() {
    return this->broken;
}

int PiggyBank::getBalance(int & amount) {
    if(!broken){
        amount = balance;
        return 0;
    }else{
        return -1;
    }
}
friend std::ostream& operator << (std::ostream& os, const PiggyBank& pb) {
    return os << pb.owner << . . .   // Whatever you want
int main() {

    PiggyBank pb;

    if (std::ofstream os("FileName"); os) {
        os << pb << "\n";
    }

    return 0;
}
friend ostream& operator << (ostream& os, const PiggyBank& obj)
{
   // For example something like this
   os << "Information that you want to output to the file:\n";
   os << "Owner: " << obj.owner << "\n";
   return os;
}
PiggyBack obj;
ofstream fout("file.txt");

// also check to see if the file opened correctly
if(fout.fail())
{
   cout << "File failed to open\n";
   return 0;
}
fout << obj;
// now you have written the owner information onto the file as well as the message before it
// inside the  operator<< overload

// close the resource at the end
fout.close();
cout << obj; // will print to the console