有程序:
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的构造函数
这段代码就是逐条记录的把BOOK数据读取到内存中。
首先初始化top为-1(因为数组的记录下标是0,当然,这样定义也跟后面使用top的策略有关)。
接着以二进制流的形式打开数据文件
第三,以循环的方式从数据流中读取book数据结构(一条记录),读取的数据内容以字符流的形式存储到Book结构中(数据结构实际上是一个块状内容)。
如果读取失败,循环结束(file返回-1,使得!file为真)。
读取成功,则把数据缓存到内存(放到数组中,此时要调整数据放置的位置,也可以理解为数据记录指针,即top值)。
最后则是关闭文件流。(这个是一个原则,打开后用完就关闭,实际上可以根据策略调整)