首页 新闻 会员 周边

一个文件流的问题

0
悬赏园豆:10 [已解决问题] 解决于 2012-06-07 22:17

有程序:

 1 BDatabase::BDatabase()
 2 {
 3 Book s;//Book是已经定义的图书类
 4 top=-1;
 5 fstream file;
 6 file.open("book.dat",ios::in|ios::binary);
 7 while(1)
 8 {
 9 file.read((char*)&s,sizeof(s));
10 if(!file) break;
11 top++;
12 book[top]=s;//数组book已经在bdatabase.h中定义,是Book类数组,记录录入的书籍信息
13 }
14 file.close();
15 }

 

 

看不懂这段程序是什么意思

问题补充:

这段程序是BDatabase的构造函数

铁树银花的主页 铁树银花 | 初学一级 | 园豆:178
提问于:2012-06-05 16:17
< >
分享
最佳答案
0

这段代码就是逐条记录的把BOOK数据读取到内存中。

 

首先初始化top为-1(因为数组的记录下标是0,当然,这样定义也跟后面使用top的策略有关)。

接着以二进制流的形式打开数据文件

第三,以循环的方式从数据流中读取book数据结构(一条记录),读取的数据内容以字符流的形式存储到Book结构中(数据结构实际上是一个块状内容)。

如果读取失败,循环结束(file返回-1,使得!file为真)。

读取成功,则把数据缓存到内存(放到数组中,此时要调整数据放置的位置,也可以理解为数据记录指针,即top值)。

最后则是关闭文件流。(这个是一个原则,打开后用完就关闭,实际上可以根据策略调整)

收获园豆:10
无之无 | 大侠五级 |园豆:5095 | 2012-06-05 16:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册