数据结构大作业进度

13.12.21

深夜看完兵哥作业要求之后,马上滚去睡觉。早上和鼻屎讨论了之后,大概有个总体思路。但操作起来十分蛋疼。

在这一天完成了基本没什么,就是加深了总体思路。大概知道怎么写。最大的东西就是写string类和指针进文件,string类是一种类,封装了很多东西,所以其实把这种类实例写入二进制文件时,写入并不仅仅是字符串那么简单,而是很多。所以在读出来时就会出错。正确写入应该是用string类的函数c_str()转换成c类型的字符串,然后再写入文件,这样就只是写入字符串而已。写出时写入到字符指针或字符数组都行。但必须注意的是要加多一个位给空字符。所以写入的字节大小都必须加一。代码如下:

string s="incy";
/*char * bd = new char[4];*/
char *cd = new char[4];
ofstream outfile("c:\\aaa.dat",ios::binary);
outfile.write(s.c_str(),s.size()+1);
outfile.close();
ifstream infile("c:\\aaa.dat",ios::in|ios::binary);
infile.seekg(ios::beg);
infile.read(cd,s.size()+1);
cout<<cd<<endl;
infile.close();
return 0;

13.12.27

去找女友两天,回来继续。

想了很久,本来是打算把记录里的每个域分开分别写进文件,因为有个string类必须再用一个变量来记录它的长度。但后来因为太麻烦了,而且这样记录整个记录所占空间大小非常麻烦。后来借鉴了鼻屎的方法,先写入string类的长度和string,再写入一个没包含string Address的记录。这样就万事大吉了。Record的大小是固定的。最后又解决了一个问题,就是把ID拿来鉴别是否有HOLE,即标志一个记录段不可用。然后我自己定义了一个const int END_FILE来标志文件尾。这样就大致框架已经好了。加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值