类就是一种自定义的数据类型,本质上和数组甚至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()终止流状态,否则禁止对文件作进一步读写操作。
#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;
}
以上参考代码,原理相同
执行结果:
#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;
}
类就是一种自定义的数据类型,本质上和数组甚至int,char这样的基本类型是没区别的。你得给它赋值才能使用,就是类对象。
就像你定义以个 int a;是无法把它打印或存储的,打印了也是乱码;必须得先 int a = 1,这样初始化一下。
你的问题就没说清楚,plane 和 a是啥都没说,估计你的意思a就是plane的一个对象吧。
你依次不这些数据存入文件就好了,
用的时候先创建一个plane变量, 然后把这些数据从文件里读出来一次给对应的成员变量赋值就行了.