首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C++中从二进制文件中删除部件

如何在C++中从二进制文件中删除部件
EN

Stack Overflow用户
提问于 2011-06-22 23:22:17
回答 2查看 2.7K关注 0票数 1

我想使用C++从二进制文件中删除部件。二进制文件大约为5-10 MB.

我想做的是:

  1. 搜索ANSI字符串“string”
  2. 一旦找到这个字符串,我想删除下面的n个字节,例如下面的1MB数据。我想删除这些字符,而不是用NULL填充它们,从而使文件更小。
  3. 我想将修改后的文件保存到一个新的二进制文件中,与原始文件相同的是什么,除了我删除的丢失的n个字节之外。

,你能给我一些建议/最佳实践,如何最有效地做到这一点?,我应该先把文件加载到内存中吗?

如何有效地搜索ANSI字符串?--我的意思是,在找到该字符串之前,可能需要跳过几兆字节的数据。>>我被告知我应该在另一个问题上问它,所以这里是:如何在二进制文件中查找ANSI字符串?

如何有效地删除n个字节并将其写入一个新文件?

好的,我不需要它是超级高效,文件不会大于10 MB和它的OK,如果它运行几秒钟。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-22 23:43:22

有许多快速字符串搜索例程比测试每个字符的性能要好得多。例如,当试图找到“某物”时,只有每九个字符需要测试。

下面是我为前面一个问题写的一个例子:对非空终止char str的标记反向搜索

票数 1
EN

Stack Overflow用户

发布于 2011-06-22 23:40:59

对于一个5-10MB的文件,如果您的系统支持它,我将查看一下写()。将整个文件读入内存,因为它足够小。扫描要删除的字节。传递writev() iovecs列表(它只是到读取缓冲区和长度的指针),然后可以在一个系统调用中重写整个修改的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6447688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档