28

我有一个日志记录功能,在这个我有日志文件。现在,每次我运行程序时,我都希望以前编写的文件不应该被删除,并且应该附加当前数据(日志文件中有什么)

只是为了说清楚,例如:我有一个日志文件 logging_20120409.log,它每天都保存时间戳。假设我运行我的项目,它将当前时间戳写入它。现在,如果我重新运行它,以前的时间戳将被它替换。我不想要这个功能。我想要上一个时间戳以及当前时间戳。

请帮忙

4

3 回答 3

55

您想以“追加”模式打开文件,因此它不会删除文件的先前内容。您可以通过指定ios_base::app打开文件的时间来做到这一点:

std::ofstream log("logfile.txt", std::ios_base::app | std::ios_base::out);

例如,每次运行时,它都会在文件中多添加一行:

#include <ios>
#include <fstream>

int main(){
    std::ofstream log("logfile.txt", std::ios_base::app | std::ios_base::out);

    log << "line\n";
    return 0;
}

所以,第一次运行它,你会得到

line

第二次:

line
line

等等。

于 2012-04-09T09:17:22.983 回答
6

使用类似的东西:

#include <fstream>
#include <iostream>
using namespace std;
int main() {
  ofstream out("try.txt", ios::app);
  out << "Hello, world!\n";
  return 0;
}

ios:app 选项使输出附加到文件的末尾,而不是删除其内容。

于 2012-04-09T09:13:31.733 回答
1

也许您需要使用附加选项打开文件。像这样:

FILE * pFile;
pFile = fopen ("myfile.txt","a");

或这个 :

fstream filestr;
filestr.open ("test.txt", fstream::app)
于 2012-04-09T09:11:36.527 回答