c++如何把一个类存到文件里

2024-10-30 06:50:53
推荐回答(5个)
回答1:

类就是一种自定义的数据类型,本质上和数组甚至int,char这样的基本类型是没区别的。得给它赋值才能使用,就是类对象。
定义写入的时候指定格式,例如:
ofstream out("out.txt",ios::out | ios::app); //这样就可以实现追加添加啦

ios_base::in
“r”
打开一读取

ios_base::out
“w”
等价于ios_base::out|ios_base::trunk(有时可以省略)

out|trunc
“w”
打开一些如文件,如果存在,则截取文件

out|app
“a”
打开以写入,只追加

in|out
“r+”
打开以写入,在文件读取的位置写入

in|out|trunc
“w+”
打开以读写,如果存在,则首先截取文件

out|binary
cmodeb
以C++mode和二进制模式打开,例如ios_base::in|ios_base::binary成为“rb”

out|ate
“cmode”
以指定的模式打开,并已到文件尾。C则需要使用独立的函数调用。例如,ios_base::in|ios_base::ate则被转换为“r”和C函数调用fseek(file,0,SEEK_END);

对于app模式,只能追加,但是不能修改原来已经存在的数据,要是其能修改,则需要与out模式组合,即app|out。对于已经处理到末尾的文件,eof位将被被设置为1,因此,如果想对文件再作修改,则需要调用函数fout.clear()终止流状态,否则禁止对文件作进一步读写操作。

回答2:

#include 
#include 
#include 
using namespace std;

struct plane{
plane(int v, string n):val(v), name(n){}
int val;
string name;

};


int main()
{
fstream fout("plane.txt", ios::app);
plane p(10, "zhang");
fout << p.val <<" "<< p.name < fout.close();

system("pause");
return 0;
}

以上参考代码,原理相同

执行结果:

回答3:

#include 
#include 

using namespace std;

class A {
private :
    int a;
    int b;
public :
    A(int aa = 0, int bb = 0) : a(aa),b(bb) {}
int GetA()const { return a; }
int GetB()const { return b; }
    // ......
};

int main() {
    A a[2] = {A(1,2),A(2,3)};
    ofstream outf("data.dat",ios_base::out|ios_base::binary);
    for(int i = 0; i < 2; ++i)
        outf << a[i].GetA() << a[i].GetB();
    outf.close();
    return 0;
}

回答4:

类就是一种自定义的数据类型,本质上和数组甚至int,char这样的基本类型是没区别的。你得给它赋值才能使用,就是类对象。
就像你定义以个 int a;是无法把它打印或存储的,打印了也是乱码;必须得先 int a = 1,这样初始化一下。
你的问题就没说清楚,plane 和 a是啥都没说,估计你的意思a就是plane的一个对象吧。

回答5:

你依次不这些数据存入文件就好了,
用的时候先创建一个plane变量, 然后把这些数据从文件里读出来一次给对应的成员变量赋值就行了.