替代文件并截断未替代的零件
Override a file and truncate the non-overridden part
如何覆盖文件的内容并截断文件中未使用C++覆盖的部分?具体来说,我使用一个临时文件来保存原始数据的编辑副本,并希望用新数据覆盖原始文件,并截断原始文件的其余部分。
对于有问题的代码:https://github.com/Sparen/DanmakufuObfuscator/blob/master/dnhobf_fxn.cc(RemoveSingleLineComments(FILE* infile)
)
为了澄清,我想做的是:假设原作是ABCDEFGHIJK。我想删除B、D、H和J,从而生成ACEFGIK。我把这个复制回来,最后得到了ACEFGIKHIJK。我想删除最后一个HIJK
不要在读取时写入同一个文件。相反:
- 打开
file.txt
进行阅读 - 打开
file.txt.new
进行写入 - 从
file.txt
中读取一行,执行映射/筛选操作,并将结果写入file.txt
- 重复步骤3,直到
EOF
- 关闭文件
- 将
file.txt.new
重命名为file.txt
就地工作的好处是,如果你的程序崩溃或断电,你就不会收到垃圾。通常,我只打开文件:
- 还不存在的
- 处于附加模式(对于日志)
将原始文件作为fstream打开。一旦临时文件具备了所需的一切,请关闭原始文件。使用out和trunk模式重新打开原始文件,并将其写回
这使您基本上可以将临时文件的内容粘贴到具有相同文件名和扩展名的空白板上。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 读取文件的最后一行并输入到链接列表时出错
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 如何在C++中从二进制文件中删除零件
- 替代文件并截断未替代的零件