2014-05-23 54 views
0

我想寫一個C++代碼,它會把一些額外的文本放在不覆蓋的中間。我嘗試過所有可能的標籤組合,但他們都沒有工作。任何人都可以給我一個工作的例子嗎?
例如: - 如果輸入是: -如何不覆蓋,但把內容放在文件的中間?

您好!
嘿,你在嗎?
有人在家嗎?

那麼輸出應該是: -

您好!
嘿,你在嗎? 你在哪裏?
有人在家嗎?

你在哪裏文字插入在middle.I'm使用c + +文件處理。

+4

你試過什麼不起作用?沒有「開箱即用」追加不在文件末尾的寫入。你必須「移動」其餘的字節。 –

+0

我試圖通過調用一些寫函數來做到這一點,但我想沒有其他方法可以自己移動字節,就像你說的那樣。我會試試你的方式。 –

+1

尋找你想要插入文本的位置,保存文本的其餘部分,直到EOF,寫下你所需要的,然後附加其餘部分。 – 0x499602D2

回答

0

我認爲,文件工作很像數組,因爲你不能做一個簡單的插入。例如,如果你正在實現一個vector或arraylist,並且想要在中間插入一個值,那麼你必須在後面插入所有的值。要插入中間,我認爲您需要移動下面的所有內容。我可能會先將所有內容讀入內存或使用臨時文件。

0

這不是C++的限制,而是底層文件系統(在大多數現代文件系統上)的限制。
文件是連續字節的塊,不能在中間附加。

你有兩個選擇:

  1. 文件讀入到內存中。
    操作內存中的文件
    覆蓋舊文件。

  2. 打開文件進行閱讀並寫入臨時文件。
    從輸入文件複製到輸出文件,直到您想要添加文本的點。
    編寫修改並完成副本。
    用tempfile替換文件。