Добавление новой строки в файл (файл журнала) в 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)
Другие вопросы по тегам