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