
c++如何把一个类存到文件里
就像一个类里有structplanea[i].num1,a[i].star_time1,a[i].stop_time1,a[i].star_city1,a[i].stop...
就像一个类里有struct plane
a[i].num1, a[i].star_time1, a[i].stop_time1, a[i].star_city1, a[i].stop_city1
怎么把他们存到一个文件里? 展开
a[i].num1, a[i].star_time1, a[i].stop_time1, a[i].star_city1, a[i].stop_city1
怎么把他们存到一个文件里? 展开
6个回答
展开全部
类就是一种自定义的数据类型,本质上和数组甚至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()终止流状态,否则禁止对文件作进一步读写操作。
定义写入的时候指定格式,例如:
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()终止流状态,否则禁止对文件作进一步读写操作。
2015-01-07
展开全部
#include <iostream>
#include <fstream>
#include <string>
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 <<endl;
fout.close();
system("pause");
return 0;
}
以上参考代码,原理相同
执行结果:
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
#include <fstream>
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的一个对象吧。
就像你定义以个 int a;是无法把它打印或存储的,打印了也是乱码;必须得先 int a = 1,这样初始化一下。
你的问题就没说清楚,plane 和 a是啥都没说,估计你的意思a就是plane的一个对象吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你依次不这些数据存入文件就好了,
用的时候先创建一个plane变量, 然后把这些数据从文件里读出来一次给对应的成员变量赋值就行了.
用的时候先创建一个plane变量, 然后把这些数据从文件里读出来一次给对应的成员变量赋值就行了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询