2012-04-09 5 views
26

Mam funkcję rejestrowania, w której mam pliki dziennika. Teraz za każdym razem, gdy uruchomię program, chcę, aby wcześniej napisany plik nie został usunięty i powinien być dołączony do bieżących danych (co jest w pliku dziennika).Dołączanie nowego wiersza do pliku (pliku dziennika) w języku C++

Po prostu, aby było jasne na przykład: Mam plik dziennika logging_20120409.log, który utrzymuje znacznik czasu na co dzień. Załóżmy, że uruchomię mój projekt, zapisuje do niego bieżący znacznik czasu. Teraz po ponownym uruchomieniu poprzednia sygnatura czasowa zostaje zastąpiona. Nie chcę tej funkcjonalności. Chcę poprzedni znacznik czasu wraz z bieżącym znacznikiem czasu.

Proszę pomóc

+0

trzeba podzielić swój kod na to, gdzie plik dziennika jest otwarte i gdzie jest on tworzony. – Vijay

+0

Otwórz plik w 'trybie dołączania' –

Odpowiedz

47

Chcesz otworzyć plik w trybie "dołącz", aby nie skasować poprzedniej zawartości pliku. To zrobić poprzez określenie ios_base::app po otwarciu pliku:

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

Na przykład, przy każdym uruchomieniu tego doda jeszcze jedną linię do pliku:

#include <ios> 
#include <fstream> 

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

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

tak, to po raz pierwszy go uruchomić, masz

line 

po raz drugi:

line 
line 

i tak dalej.

+0

może Wyjaśnij, co robi? – gandhigcpp

1

być może trzeba otworzyć plik z opcją dołączania. tak:

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

lub to:

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

jak proszę zasugerować .. – gandhigcpp

+1

nie wiem, co więcej mogę zasugerować. jak obecnie otwierasz plik? – WeaselFox

+0

w przypadku, gdy mam coś takiego: - file.open (logfileName.c_str()), a plik jest obiektem ofstream. – gandhigcpp

3

użyć coś jak:

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

iOS: opcja aplikacja sprawia, że ​​wyjście się przyłączoną do końca pliku zamiast kasowania to zawiera.