Добавление новой строки в файл (файл журнала) в C++
У меня есть функция ведения журнала, и в этом у меня есть файлы журналов. Теперь каждый раз, когда я запускаю программу, я хочу, чтобы ранее записанный файл не удалялся и к нему добавлялись текущие данные (все, что есть в файле журнала)
Например, для ясности: у меня есть файл журнала logging_20120409.log, в котором хранится метка времени на ежедневной основе. Предположим, что я запускаю свой проект, он записывает в него текущую метку времени. Теперь, если я перезапущу его, предыдущая временная метка будет заменена ей. Я не хочу эту функциональность. Я хочу, чтобы предыдущая метка времени вместе с текущей меткой времени.
Пожалуйста помоги
3 ответа
Вы хотите открыть файл в режиме "добавления", чтобы он не удалял предыдущее содержимое файла. Вы делаете это, указывая 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
и так далее.
Используйте что-то вроде:
#include <fstream>
#include <iostream>
using namespace std;
int main() {
ofstream out("try.txt", ios::app);
out << "Hello, world!\n";
return 0;
}
Параметр ios:app позволяет добавить вывод в конец файла вместо удаления его содержимого.
Может быть, вам нужно открыть файл с опцией добавления. как это:
FILE * pFile;
pFile = fopen ("myfile.txt","a");
или это:
fstream filestr;
filestr.open ("test.txt", fstream::app)