【发布时间】:2015-03-16 09:22:05
【问题描述】:
我想打开一个文件(不重新创建它)并写入一个特定的偏移量。
这是当前代码:
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 标志,它会在我打开文件时重新创建文件。
如何在不重新创建的情况下打开它并能够写入特定的偏移量?
【问题讨论】:
-
只需
std::ofstream file(conf_file_path, std::ios::out | std::ios::in); -
我建议你检查例如this reference,它有一个很好的表格,列出了不同的 open modes 以及它们对应于 C 函数
fopen的内容以及文件存在和不存在时模式的作用。 -
顺便问一下,如果您打开的文件是文本文件,那么所有记录(行等)的大小都是固定的吗?因为如果文件中的数据不是固定大小的,那么你怎么知道要查找的数量?如果你覆盖数据,如果你写的比以前少,你认为会发生什么?