5

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

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

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

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

4 回答 4

12

以附加模式打开流:

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

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

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

于 2010-11-11T14:46:19.120 回答
3

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

阅读参考以获取更多信息。

如果您需要一个复杂的日志记录和时间戳机制,有一篇关于 C++ 日志记录框架的有用 SO帖子。Pantheios得到了公认的答案。

于 2010-11-11T14:46:36.853 回答
1

由于作者似乎对建议的答案有疑问,我将添加另一个。

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

我想使用显式流

流的

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

于 2016-10-03T08:29:51.010 回答
0

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

于 2010-11-11T14:45:54.400 回答