首页 新闻 会员 周边 捐助

IO流,文件关于对象的输入与输出

0
悬赏园豆:50 [已解决问题] 解决于 2015-07-15 16:37

C++里,如何往文件中输入对象的数据成员以及如何从文件中读取出对象的数据成员

coolnb的主页 coolnb | 初学一级 | 园豆:152
提问于:2015-07-14 21:08
< >
分享
最佳答案
0

你的对象是啥样子?

收获园豆:50
Launcher | 高人七级 |园豆:45050 | 2015-07-15 09:20

class  Stu

{private:

string name;

double grate;

public:

}

coolnb | 园豆:152 (初学一级) | 2015-07-15 09:31

@coolnb: 你打算按照什么编码来写入文件?

Launcher | 园豆:45050 (高人七级) | 2015-07-15 09:32

@Launcher: 什么意思 ?我就是不知道怎么把对象的数据成员写入文件

coolnb | 园豆:152 (初学一级) | 2015-07-15 15:39

@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 | 园豆:45050 (高人七级) | 2015-07-15 15:45

@Launcher: 能不能用ofstream类和ifstream类来写入文件呢?

coolnb | 园豆:152 (初学一级) | 2015-07-15 15:55

@Launcher: 你写的这个我不会用

coolnb | 园豆:152 (初学一级) | 2015-07-15 16:02

@coolnb: 请问你会用 ofstream 吗?

Launcher | 园豆:45050 (高人七级) | 2015-07-15 16:02

@Launcher: 会简单的用法  就是从C++书最后一章看到的 

coolnb | 园豆:152 (初学一级) | 2015-07-15 16:06

@Launcher: C++课本上有写向文件输入文本  但没提怎么把对象写入文本  就提到了用二进制把结构输入文本,我试着把结构换成对象来输,但最后还是输入不进去

coolnb | 园豆:152 (初学一级) | 2015-07-15 16:09

@coolnb: 

string name="coolnb";

double grate=1.345;

那么你的 C++ 课本上把这两个变量写入文本的代码怎么写的?

Launcher | 园豆:45050 (高人七级) | 2015-07-15 16:12

@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";

coolnb | 园豆:152 (初学一级) | 2015-07-15 16:17

@Launcher: 还有别个方法,如下

ofstream fout("planets.dat",ios_base::out | ios_base::app | ios_base::binary);

fout.write((char *) &p1,sizeof p1);

coolnb | 园豆:152 (初学一级) | 2015-07-15 16:20

@coolnb: 你这不都会吗?你要问啥?

Launcher | 园豆:45050 (高人七级) | 2015-07-15 16:22

@Launcher: 额 我按书上的写法  我就写不进去文件里  我根本就不能在弹出来的窗口进行输入  搞得我都晕了

coolnb | 园豆:152 (初学一级) | 2015-07-15 16:26

@Launcher: 你能写个小程序实现往文件中写入和读取对象的数据成员吗?谢谢 我感觉我没学明白如何运用

coolnb | 园豆:152 (初学一级) | 2015-07-15 16:30

@coolnb: http://blog.csdn.net/kingstar158/article/details/6859379 你先把文件读写学会了再说对象状态持久化的问题吧

Launcher | 园豆:45050 (高人七级) | 2015-07-15 16:33

@Launcher: 恩恩 好的 非常感谢

coolnb | 园豆:152 (初学一级) | 2015-07-15 16:35
其他回答(3)
0

用fstream类,成员函数open()实现打开文件的操作,从而将数据流和文件进行关联,通过ofstream,ifstream,fstream对象进行对文件的读写操作,具体参数一查就知道了

SouthSky | 园豆:229 (菜鸟二级) | 2015-07-14 21:21
0

你的问题其实是“C++如何序列化一个对象”,搜一下就搜到了。(我不是搞C++的,搜到的结果怕不是你要的)

liqipeng | 园豆:1160 (小虾三级) | 2015-07-14 21:24
0
#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;
}
DoubleQ | 园豆:202 (菜鸟二级) | 2015-07-14 21:38

我是想写入多个数据成员

支持(0) 反对(0) coolnb | 园豆:152 (初学一级) | 2015-07-14 22:34

@coolnb: 把多个数据成员封装成结构体或者类

支持(0) 反对(0) DoubleQ | 园豆:202 (菜鸟二级) | 2015-07-15 07:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册