怎样以插入的方式向文件中写数据?
用fstream向文件写数据时,通常都是以位置指针为起点,以覆盖的方式写数据,但是我想从当前位置插入一段数据,应该怎么做? 问题点数:20、回复次数:7Top
1 楼windywater(超级宇宙无敌大白痴)回复于 2006-03-04 13:36:04 得分 0
又没人回答?Top
2 楼0delphi(睡个舒服觉)回复于 2006-03-04 13:52:46 得分 3
这个问题,已经有很多人问过了,没有什么好解决的办法,只有 把你要插入的内容,跟后面的内容,在重写一次Top
3 楼windywater(超级宇宙无敌大白痴)回复于 2006-03-04 13:56:15 得分 0
没有别的好办法吗?如果文件很大的话那效率不是很低?Top
4 楼zengkun100(夜的孩子)回复于 2006-03-04 16:52:01 得分 3
是啊!
我以前也问过类似的问题,解答的方案类似,要想提高效率,应该考虑使用Windows或者其他操作系统提供的高级文件功能,比如内存映射文件Top
5 楼rabbit729(无名胜有名)回复于 2006-03-04 18:36:00 得分 2
C++中的ios_base::app提供了以追加方式向文件中写数据Top
6 楼windywater(超级宇宙无敌大白痴)回复于 2006-03-04 22:14:18 得分 0
C++中的ios_base::app提供了以追加方式向文件中写数据
-------------------------
这样只能加到文件尾部,但是不能加在中间。Top
7 楼steedhorse(晨星)回复于 2006-03-04 23:45:09 得分 12
“文件很大”,同对又对效率要求比较高的话,应该自己想办法通过精心设计你的文件格式来解决问题。比如让文件物理内容逻辑上分成好多“记录”或者“块”,然后给每个块编上号,同是增加“删除标记”,这样,不管你随机的“添加”,“删除”就成了一种逻辑上的动作。当然,这种时间上的效率是以牺牲磁盘空间的存储效率和增加程序的复杂度来获得的。
或者也可以采用类似“链式存储”的方法。总之方法不只一种,但都需要精心地去设计和实现。
直接的方法就甭想了,如果你是操作系统的编写者,你也不会提供那种磁盘操作的API,或者即使你提供了,你也不是“提高”了效率,你只不过是同样通过很低效的移动内容的方法编写了一个函数用来误导用户而已。Top




