C++里,如何往文件中输入对象的数据成员以及如何从文件中读取出对象的数据成员
你的对象是啥样子?
class Stu
{private:
string name;
double grate;
public:
}
@coolnb: 你打算按照什么编码来写入文件?
@Launcher: 什么意思 ?我就是不知道怎么把对象的数据成员写入文件
@coolnb: 我就是不知道怎么把对象的数据成员写入文件 ——〉 我举个例子来告诉你怎么写:
Stu stu={"coolnb",1.345};
WriteFile(hFile,stu.name.cstr(),sut.name.length(),NULL,NULL);
WriteFile(hFile,&stu.grate,sizeof(double),NULL,NULL);
@Launcher: 能不能用ofstream类和ifstream类来写入文件呢?
@Launcher: 你写的这个我不会用
@coolnb: 请问你会用 ofstream 吗?
@Launcher: 会简单的用法 就是从C++书最后一章看到的
@Launcher: C++课本上有写向文件输入文本 但没提怎么把对象写入文本 就提到了用二进制把结构输入文本,我试着把结构换成对象来输,但最后还是输入不进去
@coolnb:
string name="coolnb";
double grate=1.345;
那么你的 C++ 课本上把这两个变量写入文本的代码怎么写的?
@Launcher:
struct plant
{
char name[20];
double population;
double g;
};
ofstream fout("planets.dat",ios_base::out | ios_base::app);
fout << p1.name << " " << p1.population << " " << p1.g << "\n";
@Launcher: 还有别个方法,如下
ofstream fout("planets.dat",ios_base::out | ios_base::app | ios_base::binary);
fout.write((char *) &p1,sizeof p1);
@coolnb: 你这不都会吗?你要问啥?
@Launcher: 额 我按书上的写法 我就写不进去文件里 我根本就不能在弹出来的窗口进行输入 搞得我都晕了
@Launcher: 你能写个小程序实现往文件中写入和读取对象的数据成员吗?谢谢 我感觉我没学明白如何运用
@coolnb: http://blog.csdn.net/kingstar158/article/details/6859379 你先把文件读写学会了再说对象状态持久化的问题吧
@Launcher: 恩恩 好的 非常感谢
用fstream类,成员函数open()实现打开文件的操作,从而将数据流和文件进行关联,通过ofstream,ifstream,fstream对象进行对文件的读写操作,具体参数一查就知道了
你的问题其实是“C++如何序列化一个对象”,搜一下就搜到了。(我不是搞C++的,搜到的结果怕不是你要的)
#include <cstdio> #include <iostream> using namespace std; int main() { freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); string a; cin >> a; // 从in.txt里都一个字符串 cout << a; // 将该字符串写入out.txt return 0; }
我是想写入多个数据成员
@coolnb: 把多个数据成员封装成结构体或者类