1

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

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

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

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

和一个伪代码:

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;
}
4

1 回答 1

2

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

myWriteFile.seekp(0);

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

于 2013-02-20T01:57:49.137 回答