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

就像一个类里有struct plane
a[i].num1, a[i].star_time1, a[i].stop_time1, a[i].star_city1, a[i].stop_city1
怎么把他们存到一个文件里?

类就是一种自定义的数据类型,本质上和数组甚至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()终止流状态,否则禁止对文件作进一步读写操作。
温馨提示:内容为网友见解,仅供参考
第1个回答  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;
}

以上参考代码,原理相同

执行结果:

第2个回答  2015-01-07
#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;
}

本回答被提问者和网友采纳
第3个回答  2015-01-07
类就是一种自定义的数据类型,本质上和数组甚至int,char这样的基本类型是没区别的。你得给它赋值才能使用,就是类对象。
就像你定义以个 int a;是无法把它打印或存储的,打印了也是乱码;必须得先 int a = 1,这样初始化一下。
你的问题就没说清楚,plane 和 a是啥都没说,估计你的意思a就是plane的一个对象吧。
第4个回答  2015-01-07
你依次不这些数据存入文件就好了,
用的时候先创建一个plane变量, 然后把这些数据从文件里读出来一次给对应的成员变量赋值就行了.

在VC++6.0中怎样自己定义的一个类放入到一个头文件中?
C++中,一般把类的定义放到头文件(.h)中,把类的实现放到源文件(.cpp)中,所以,一般在C++中,一个类一般需要一个与类同名的头文件和一个源文件。比如定个一个类 Sample,类中定个一个私有成员变量,和两个公共成员函数,有如下代码:\/\/Sample.h class Sample { private:DWORD dw; \/\/私有成员...

c\/c++ 如何将一个int型以字符串的形式写入文件
main(){ int x;x=1234;FILE *fp;fp=fopen("filename.txt", "a");fprintf(fp,"%d\\n",x); \/\/fprintf的用法和printf的用法基本一样,只是多了一个参数:指向你要写入的文件的指针。fclose(fp);return 0;}

C语言\/c++如何把数输入到txt文件中去
"这5个数已成功保存到filename.txt文件中\\n");return 0;}C++语言将数输入到文件中:C++有关文件的操作要包含头文件fstream,因为头文件fstream中定义了一个用于处理输出的ofstream的类 声明ofstream变量(对象):ofstream file;声明一个变量(也可以是数组) int a;需要将ofstream对象与文件关联起来,使用...

c++中,如何将类的源文件放在头文件中,使其在另一个源文件中可以通过包含...
比如有个类ABC要在main.cpp内使用,创建两个文件 ABC.h,ABC.cpp 把类的声明都写在h里面,方法的实现写在cpp里面,然后在main.cpp内#include "ABC.h",然后编译,如果是工程就把ABC都加到工程里,如果不是就要手动链接了。头文件只是提供声明,#include了头文件是保证main.cpp知道了接口。而链接才...

怎么把C++程序的输出结果存储到一个TXT文件中?
write.open("text.txt); \/\/表示你要把内容输出到“text.txt"这个文件里 如果没有这个文件,会自动创建这个文件 write << "abc"; \/\/这里是你想要输出的内容,这里是输出了一个string abc write.close(); \/\/ 输出完毕后关闭这个文件 在C++中,类是支持数据封装的工具,对象则是数据封装的实现。

请问C++ 如何从txt文件中读取数据,然后保存在类的数组中?
要声明一个信息(学生)类的数组然后再读文件,读文件大概代码如下:ifstream File_read;while(!File_read.eof()){ File_read>>data[i].num>>data[i].name>>data[i].score;i++;} 数组data是的类型是信息类。自己试试。

c++一个类里的string类型怎么用二进制文件保存
outfile.write(str1.c_str(),str1.size()+1);\/*你原来写成(char * )&str1,这样往文件里写入的东西其实是str1这个类的数据(包括了指向实际字符串的指针),而不是字符串。因为string类的字符串是用new在堆上分配的,string类本身只包含字符串的指针,用c_str()这个成员函数可以获得这个指针,...

C++ 如何将一个文本保存到另外一个二进制文件中
计算机里面任何文件都是二进制保存的 关键在于你的打开文件方式 如果你用编辑器打开,就只能看到文本信息和内容 如果用UltraEdit之类的软件打开一个文本,切换到十六进制显示,就可以看到二进制信息 所以,任何文本直接写入(不论是“w”还是“wb”)到某个文件即可 要看二进制,只需要选择一个合适的文本...

C++中类的对象在文件中的存取问题
后一种改法大致如下 include<iostream>#include<fstream>#include<string>using namespace std;class Key{private:string keyword;public:Key();string getkey();void setkey(string NewKey);};string Key::getkey(){return keyword;}Key::Key(){}void Key::setkey(string NewKey){keyword = New...

请问C++如何保存一个类对象
--- sizeof(A)告诉你的是对象的大小,可以用A代替对象变量只是一种方便的书写方式.类比sizeof(int)就知道了,你不会因为sizeof(int)==4就说机器给int这个类型分了4个字节吧.纠正我前面的回答:虚函数表确实是在类的内存里,对象内存只存指向它的指针---我估计就是多出来的那4字节.希望能解决您的...

相似回答