C++ 如何在不关闭文件的情况下覆盖文件

C++ 如何在不关闭文件的情况下覆盖文件,c++,file-io,C++,File Io,关于如何在不覆盖文件的情况下写入文件,存在许多问题 但这次我需要知道如何打开一个文件,然后写入一个包含几个字符的值。该值非常短,但使用更新值替换文件内容的过程可能会发生十亿次 所以这里又有一个问题:有没有一种方法可以写入这样一个文件,只打开一次,而不是在多次覆盖内容之前关闭它 也许如果我告诉你我为什么需要这个,它会帮助你给我一个更好的解决方案。 我需要将模拟器的当前时间写入另一个模拟器读取和使用的文件(用于同步目的) 和psudo代码: int main() { int i = 0;

关于如何在不覆盖文件的情况下写入文件,存在许多问题

但这次我需要知道如何打开一个文件,然后写入一个包含几个字符的值。该值非常短,但使用更新值替换文件内容的过程可能会发生十亿次

所以这里又有一个问题:有没有一种方法可以写入这样一个文件,只打开一次,而不是在多次覆盖内容之前关闭它

也许如果我告诉你我为什么需要这个,它会帮助你给我一个更好的解决方案。 我需要将模拟器的当前时间写入另一个模拟器读取和使用的文件(用于同步目的)

和psudo代码:

int main() {

    int i = 0;
 std::ofstream myWriteFile;
 ostringstream out;
 myWriteFile.open("text.txt");

 while (i < 4) {    
     out.str("");
     out << currentTime();
    myWriteFile << out.str() << std::endl;
    i++;
 }

myWriteFile.close();
return 0;
}
intmain(){
int i=0;
流myWriteFile的std::;
ostringstream out;
myWriteFile.open(“text.txt”);
而(i<4){
out.str(“”);
out在写入文件之前,使用以下命令将“put”指针定位到文件的开头:


“放”指针指定要在文件中写入的位置。当您写入内容时,指针会自动递增,这就是为什么连续写入文件会导致数据附加到以前写入的数据的末尾。

感谢您的回复。假设将XXXXX写入文件并使用seekp返回beg文件的一局并写入YYY。输出将为YYYXX,而我需要的只是YYY。对吗?我可以在写入之前删除内容,但有更好的方法吗?谢谢,您不能截断打开的文件。如果需要的话,您仍然可以重新打开它。但是,您可以在其中写入终止字符,然后另一个模拟器最多只能读取到例如,一个<代码> \n>代码>可以工作,在这种情况下,你只考虑第一行是重要的。是的。我想这是一个很好的方式。谢谢(我还有一个问题,我会把它放在另一个帖子里)。
myWriteFile.seekp(0);