2012-04-09 64 views
26

我有一個日誌記錄功能,在這裏我有日誌文件。現在,每次運行程序時,我都希望先前寫入的文件不應該被刪除,並且應該附加當前數據(日誌文件中的任何內容)在C++的文件(日誌文件)中追加新行

只是爲了說明問題:我有日誌文件logging_20120409.log,它每天保持時間戳。假設我運行我的項目它寫入當前時間戳。現在,如果我重新運行它,則先前的時間戳將被替換。我不想要這個功能。我想要以前的時間標記和當前的時間標記。

請幫忙

+0

你需要共享你的代碼到日誌文件被打開所在的位置以及它被創建。 – Vijay 2012-04-09 09:12:16

+0

在'append模式下打開文件' – 2012-04-09 09:44:30

回答

47

您希望以「附加」模式打開文件,因此它不會刪除文件的以前的內容。你這樣做,通過指定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 

等等。

+0

可以你知道它做了什麼? – gandhigcpp 2012-04-09 09:19:52

1

也許您需要使用append選項打開文件。像這樣:

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

或本:

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

請問如何建議.. – gandhigcpp 2012-04-09 09:12:18

+1

不知道我還有什麼建議。你目前如何打開文件? – WeaselFox 2012-04-09 09:14:35

+0

萬一我有這樣的東西: - file.open(logfileName.c_str());和文件是ofstream的一個對象。 – gandhigcpp 2012-04-09 09:14:39

3

使用類似:

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

iOS的:應用程序選項可以使輸出中獲得附加到文件末尾,而不是刪除的其內容。