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

时间:2013-02-20 01:45:57

标签: c++ file-io

关于如何在不覆盖文件的情况下写入文件有很多问题。

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

所以这里又是一个问题:有没有办法通过打开一次而不是在多次覆盖内容之前关闭它来写入这样的文件?

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

和一个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;
}

1 个答案:

答案 0 :(得分:1)

在使用std::ostream::seekp写入之前,将“put”指针放在文件的开头:

myWriteFile.seekp(0);

“put”指针指定要在文件中写入的位置。当你写东西时它会自动递增,这就是连续写入文件导致数据附加到先前写入数据末尾的原因。