Подтвердить что ты не робот

Добавление новой строки в файл (файл журнала) в С++

У меня есть функция ведения журнала, и у меня есть файлы журналов. Теперь каждый раз, когда я запускаю программу, я хочу, чтобы ранее записанный файл не удалялся и должен быть добавлен с текущими данными (что есть в файле журнала)

Просто, чтобы это было ясно, например: у меня есть файл журнала logging_20120409.log, который хранит метку времени на ежедневной основе. Предположим, что я запускаю свой проект, он записывает в него текущую временную метку. Теперь, если я перезапущу его, предыдущая временная метка будет заменена им. Я не хочу эту функциональность. Я хочу, чтобы предыдущая метка времени вместе с текущей меткой времени.

Пожалуйста, помогите

4b9b3361

Ответ 1

Вы хотите открыть файл в режиме "добавить", чтобы он не удалял предыдущее содержимое файла. Вы делаете это, указав 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

и т.д.

Ответ 2

Используйте что-то вроде:

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

Параметр ios: app добавляет выходной файл в конец файла, а не удаляет его содержимое.

Ответ 3

Возможно, вам нужно открыть файл с помощью опции append. например:

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

или это:

fstream filestr;
filestr.open ("test.txt", fstream::app)