我正在用C ++进行重力数值模拟,我希望每次计算一个步骤时都会备份我的结果。
但是,我现在这样做,程序总是覆盖文件。我想我总是可以通过将文本保存在不同的文件或变量中来解决问题,但我想知道是否有更简单的方法来打开文本文件以便我不会覆盖它。
我当前的“备用代码”如下所示:
fstream log;
log.open ("log.txt");
if (log.is_open())
{...
...
log.close();
}
答案 0 :(得分:9)
以append-mode打开流:
log.open("log.txt", fstream::app);
这将简单地将新输出附加到现有,为您提供一个随时间增长的大日志文件。
一个建议(如果您还没有这样做)是在日志数据中包含某种时间戳,这样当您读取文件时,您可以将记录的数据与程序的运行相关联。
答案 1 :(得分:3)
使用log.open("log.txt", fstream::app)
附加到文件。
阅读this参考了解更多信息。
如果您需要一个复杂的日志记录和时间戳机制,那么有一个关于C ++日志框架的有用SO post。 Pantheios得到了接受的答案。
答案 2 :(得分:0)
设置要追加的模式。看到这个: http://www.cplusplus.com/reference/iostream/fstream/open/
答案 3 :(得分:0)
由于autor似乎对建议的答案有问题,我将再添加一个。
ofstream log;
log.open("log.txt", ofstream::app);
我想使用显式流
ifstream的
和
ofstream的
有时效果更好。虽然我不知道原因。