2014-12-13 129 views
0

的開始我有一個文件,它是像C++寫入字符串文件

這是第1行

這是第2行

和我有一個字符串This is line 0。我如何寫這個字符串轉換成文件,使文件的內容的開頭現在:

這是行0

這是1號線

這是2號線

我現在有

ifstream myfile("lunch.txt"); 
myfile.seekg(0,ios::beg); 
myfile << "This is line 0"; 

但它不是一個工作預計。

+1

因爲您需要移動其餘部分以適合新行。 – 2014-12-13 10:13:13

回答

1

無法寫入std::ifstream(即輸入)。更改您的代碼以使用std::ofstream寫輸出:

ofstream myfile("lunch.txt"); 
// ^^^^^^^^ 
    // myfile.seekg(0,ios::beg); <<< this code isn't necessary 
    myfile << "This is line 0"; 

爲了解決有關文件中的現有內容之前插入,你第一次讀你的問題,同時節省例如內容一個std::vector<std::string> lines;。然後再次打開文件,寫入第一行,並跟隨lines中保存的值。

+0

但是,此代碼將覆蓋文件的開頭。問題是如何在文件的開頭插入內容。 – Weston 2014-12-13 10:20:57

+0

@韋斯頓我不是蓋過這個嗎? – 2014-12-13 10:23:51

+0

哦,是的 - 對不起,回合..! :)沒有看到那部分第一次。你以後添加了嗎?無論如何,你是對的。只有我的評論是,如果原始文件的大小可能非常大,那麼將它讀入矢量可能是一個問題。 – Weston 2014-12-13 10:28:50

0

您無法插入文件的開頭,並且現有內容會自動移動。

最好的辦法是打開一個新文件並寫下「這是第0行」,然後複製現有文件的內容。