gpt4 book ai didi

C++ fstream 写入/读入对象

转载 作者:太空宇宙 更新时间:2023-11-04 12:13:06 25 4
gpt4 key购买 nike

我有这些 C++ 头文件

#include <iostream>
#include "istruttore.h"
#define max 30

using namespace std;
//==============================================================================
class corso
{
friend ostream& operator << (ostream& out, const corso& corsoapp);
friend istream& operator >> (istream& in, corso& corso);

public:
int getid_corso();
char* getnomecorso();
double getcosto();
char* getdurata();
int getistruttore_id();
char* getistruttore_name();
char* getistruttore_surname();
void setid_corso(int course);
void setnomecorso(char namecourse[]);
void setcosto (double pay);
void setdurata(char duration[]);
void set_istruttore(char name[], char surname[], int id, int id_corso);
corso();
~corso();
istruttore* ist;
private:
int id_corso;
char nomecorso[max];
double costo;
char durata[max];
};



#include <iostream>

#define max 30

using namespace std;
//==============================================================================
class istruttore {
friend ostream& operator <<(ostream& out, const istruttore& istruttoreapp);
friend istream& operator >>(istream& in, istruttore& istruttore);

public:
int getid_istruttore();
char* getnome();
char* getcognome();
int getid_corso();
void setid_istruttore(int idistruttore);
void setnome(char name[]);
void setcognome(char surname[]);
void setid_corso(int idcorso);
istruttore();
~istruttore();
protected:
int id_istruttore;
char nome[max];
char cognome[max];
int id_corso;
};

我已经为两个 header 实现了所有方法。我想这样写一个二进制文件:

fcliente.write(reinterpret_cast<const char*>(&tmpcorso),sizeof(tmpcorso));

其中 tempcorso 是 corso 类型的对象。写作还可以,但阅读就不行了。我尝试用这段代码读取同一个二进制文件

fcorso.read(reinterpret_cast<char*>(&tmpcorso),sizeof(tmpcorso))

但是当我查看 tmpcorsoistruttore 的值时,该值不正确。我该如何解决?

最佳答案

你的问题是指针

   istruttore* ist;

如果您在程序的同一次运行中写出并立即再次读入,指向的对象可能仍然存在。

如果您保存文件并稍后有时读取它,istruttore 对象很可能在其他地方。

关于C++ fstream 写入/读入对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8987032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com