写入文本文件而不覆盖它

时间:2010-11-11 14:43:25

标签: c++ textinput numerical

我正在用C ++进行重力数值模拟,我希望每次计算一个步骤时都会备份我的结果。

但是,我现在这样做,程序总是覆盖文件。我想我总是可以通过将文本保存在不同的文件或变量中来解决问题,但我想知道是否有更简单的方法来打开文本文件以便我不会覆盖它。

我当前的“备用代码”如下所示:

fstream log;
log.open ("log.txt");
if (log.is_open())
{...
  ...
  log.close();
}

4 个答案:

答案 0 :(得分:9)

以append-mode打开流:

log.open("log.txt", fstream::app);

这将简单地将新输出附加到现有,为您提供一个随时间增长的大日志文件。

一个建议(如果您还没有这样做)是在日志数据中包含某种时间戳,这样当您读取文件时,您可以将记录的数据与程序的运行相关联。

答案 1 :(得分:3)

使用log.open("log.txt", fstream::app)附加到文件。

阅读this参考了解更多信息。

如果您需要一个复杂的日志记录和时间戳机制,那么有一个关于C ++日志框架的有用SO postPantheios得到了接受的答案。

答案 2 :(得分:0)

设置要追加的模式。看到这个: http://www.cplusplus.com/reference/iostream/fstream/open/

答案 3 :(得分:0)

由于autor似乎对建议的答案有问题,我将再添加一个。

ofstream log;
log.open("log.txt", ofstream::app);

我想使用显式流

  

ifstream的

  

ofstream的

有时效果更好。虽然我不知道原因。