C++从文件中读取对象

来源:百度知道 编辑:UC知道 时间:2024/06/10 20:58:46
C++中,怎样从一个文件中(已存在)读取若干对象,然后保存到一个对象数组里?
各对象保存到一个数组里后,还要能继续对其操作,(比如,查找,删除,不过这些我自己会弄的)只要能使其继续操作就好.
还有,如果是用for循环,那第二个条件怎么写呢?就是怎么判断是否到达了文件尾.

首先对你的问题进行分析,“怎样从一个文件中(已存在)读取若干对象,然后保存到一个对象数组里”
分为两大块,一个是读取已有文件,另一个是保存到对象数组中!
一、1.读取的文件有二进制文件和文本文件,这里介绍为了快速读取的二进制文件(缺点是你打开那文件,读不懂,文本文件可以很方便的看到,但是只要修改参数,一样的!)
2.读取对象,那么就是数据块的读写,所以就不说单字符,随机的方式了!
有两个函数!
读文件 istream &read(unsigned char* buf,int num);
写文件 ostream &write(unsigned char* buf,int num);
buf这个参数就是你的对象数组的指针,num就是你要读取的数据快字节数(可以用sizeof()来获得,比如你的对象是user1,其类是User,那么读取一个对象就是sizeof(User),可以用for循环来读取多个!)
二、保存到对象数组!这个应该很简单了,前面的buf指针指向这个数组就好了!举个具体的例子!
#include <fstream.h>
#include<iostream.h>
#include<string.h>
class User
{
public: //为了简单,设为公有的了!你可以设一个函数来存储数据,这样可以访问私有
int num;
int age;
};
main()
{
ofstream out("test"); // ofstream 是输出文件流与下面的对应
if(!out)
{
cout<<"不能建立文件\n";
return 1;
}
User user1,user2;
user1.num=100;
user1.age=20;
out.write((char *) &user1.num,sizeof(int