std::ofstream 打开文件并替换特定的偏移量

std::ofstream open file and replace in specific offset

本文关键字:偏移量 替换 文件 ofstream std      更新时间:2023-10-16

我想打开一个文件(不重新创建它)并写入特定的偏移量。
这是当前代码:

std::ofstream file(conf_file_path, std::ios::app);
file.seekp(offset, std::ios::beg);
const auto& output = file.write(conf_str, conf_str_len);

但它总是写入文件的末尾(可能是由于 app 标志)
如果我不使用 app 标志,它会在我打开文件时重新创建文件。

如何在不重新创建它的情况下打开它并能够写入特定的偏移量?

它总是写入文件的末尾(可能是由于应用程序标志)

是的,这是由于app标志。文档内容如下:

应用 - 在每次写入之前查找到流的末尾


如果我不使用应用程序标志,它会在我打开文件时重新创建文件。

如果在模式中设置了outtrunc标志,则会销毁文件的内容(如果已存在)。

如何在不重新创建它的情况下打开它并能够写入特定的偏移量?

您可以使用in|out .如果文件不存在,这将出错;如果存在,则将从头开始打开并读取该文件。如果您希望从末尾读取流,则可以另外设置 ate 标志。

所有这些都清楚地记录在这里;阅读手册真的很有帮助。