【发布时间】:2021-04-12 14:34:52
【问题描述】:
使用 C++、gcc.9x、Linux。我尝试打开并读取文件,然后保持打开状态以进行进一步操作 - 为每次迭代重写它。
但是每次,在我执行open 这个文件之后 - 它都会被清除。
是否可以保留文件内容直到我重写它?
而且我想一直打开文件以进行写入。
constructor()
{
{
ifstream tmp("file.db");
int date;
tmp >> date;
}
// it gets wiped out here, but I don't want it.
// And I want to keep ofstream opened all the time.
fileStreamMember_.open("file.db"); // std::ofstream
}
writeMethod()
{
fileStreamMember_.seekp(0, ios::beg);
fileStreamMember_<< date_ << endl;
}
【问题讨论】:
-
这能回答你的问题吗? How to append text to a text file in C++?
-
几乎完美的复制品:stackoverflow.com/q/39256916/103167
-
谢谢,它解释了我的问题。我每次都需要覆盖文件内容。但它应该存在,直到我重写它......我试图组合不同的标志 - 但它对我不起作用。它要么截断文件,要么附加到文件的末尾..
-
@AlexandrDerkach:唯一可以让您重写现有内容中任意位置的方法是
in | out。从您的角度来看,您不是在读取现有内容,但从操作系统的角度来看,如果您只想更改块内的几个字节,则操作系统必须读取块,更改这些字节,并将整个修改后的块发送回磁盘。