【发布时间】:2016-06-23 13:45:10
【问题描述】:
我正在尝试使用 ofstream 和 seekp 在 C++ 中将文本添加到特定位置。但是,它总是附加到文件的末尾。
我已经尝试用file.write(string, len)写信,但结果是一样的。
我的代码:
void printHistory(int media, time_t timestamp){
ofstream file("history.json", ios::app);
long initial_pos = file.tellp();
file.seekp(initial_pos-3);
file << ", [" << timestamp << "," << media << "]]\n}";
file.close();
}
【问题讨论】:
-
当然
operator<<()不关心seekp()调用。您必须改用file.write()。但请注意:这会覆盖该位置的所有内容。 -
我已经尝试过了。结果是一样的……
-
请发minimal reproducible example,这样大家都能重现你的问题。
-
我不想添加到最后。我正在尝试在末尾添加负 3,但是,程序总是在末尾追加。
-
@LuizGuilhermeFonsecaRosa 程序总是在末尾追加那是因为你用
ios::app打开ofstream,which means:所有输出操作都会发生在文件末尾,附加到其现有内容。