2013-07-30 54 views
0

我正在尋找一種簡單的方法在已有文本文件的第一行寫入內容。我試着用ofstream的是這樣的:寫入到C++中的文本文件的開頭

ofstream textFileWriter("Data/...txt"); 
if (textFileWriter.is_open()) 
{ 
    textFileWriter << "HEADER: stuffstuff"; 
} 

但它會刪除它曾經是在該文件中的一切,即使ofstream的沒有用的std :: ofstream的:: TRUNC構建。我不能使用std :: ofstream :: app,因爲寫入第一行非常重要。

複製整個文本文件到一具有線已經是一個矢量,然後寫回將是我最後的選擇,但有些事我真的想避免,因爲TEXTFILES是相當大的。

+0

有沒有簡單的方法來做到這一點。文件中沒有_insert_操作。你必須寫一個新文件,首先寫新的第一行,然後複製原件。 – Barmar

+0

您可以使用'prepend file'來搜索stackoverflow來查找多個建議,如[this](http://stackoverflow.com/search?q= [c%2B%2B] + prepend + file) – nabulke

回答

2

你不能簡單的「追加」到文件的開頭。

常見的解決方案是打開一個新的(臨時)文件,編寫新的頭文件,將原始文件的其餘部分寫入臨時文件,然後將臨時文件「重命名」(使用OS系統調用)爲原始文件。

或者當你在你的問題說,讀原始文件到內存緩衝區(例如一個向量),做該緩衝區的修改,然後把緩衝區裏的文件。

+0

這太糟糕了。但是,謝謝,現在至少我不會再浪費時間尋找另一個解決方案了=) – Arne