C++文件操作问题,如何将文件中的指定部分数据替换而保持其他部分不变

2024-12-05 09:50:13
推荐回答(2个)
回答1:

这个太麻烦了,简单跟你说一下思想,不管你是用c的FILE指针还是c++的fstream,大致如下
1、打开文件
2、按顺序以次读取,一次读一个字符
3、判断是不是0,如果是0,记下文件指针的位置
4、继续读取,以次判断是不是x、1、5三个;如果下一个字符是0,回到第3步;如果不匹配,重复2-4步
5、匹配成功后,让文件指针返回第3步记录的位置
6、写入0x15,关闭文件

简单来说就是自己实现一个字符串查找的功能

另外就是直接整个文件先读进来,然后用字符串替换功能替换后,再写入文件

再进一步,可以结合上面两个办法,就是一次读入一行,然后查找替换,如果替换成功后,就将新的内容写入文件。写入文件有两个思路,如果是替换前后的字符串长度一样,可以记下行首指针位置,写入一替换后的内容即可。如果长度不一样,就新开文件写入。

回答2:

因为文件不支持随机写入.
所以只能读取出来, 替换后, 重新写入.
如果你的文件不大, 那么就一次全部读取出来, 修改后全部重新写入.
如果文件比较大, 那么就每次读取一行或者一个数据块, 修改后写入临时文件中. 修改完后, 再用临时文件替换原文件.