如何用c ++覆盖文件的一部分

时间:2010-03-27 17:49:21

标签: c++ text-files

我想使用c ++修改文本文件的中间部分,而不改变文件的其余部分。我怎么能这样做?

3 个答案:

答案 0 :(得分:14)

使用 std :: fstream

更简单的std :: ofstream不起作用。它会截断你的文件(除非你使用选项std :: ios_base :: app,这不是你想要的)。

std::fstream s(my_file_path); // use option std::ios_base::binary if necessary
s.seekp(position_of_data_to_overwrite, std::ios_base::beg);
s.write(my_data, size_of_data_to_overwrite);

答案 1 :(得分:8)

如果替换字符串的长度相同,则可以进行更改。如果替换字符串较短,您可以使用零宽度空格或类似字符串填充它以使其具有相同的字节数,并进行更改。如果替换字符串较长,除非您先移动所有剩余数据,否则没有足够的空间。

答案 2 :(得分:0)

通常,打开文件以便在文本模式下阅读,逐行读取直到想要更改的位置,同时读取行,将它们写入您打开写入的第二个文本文件中。在更改位置,将新数据写入第二个文件。然后继续读取/写入文件。