[問題] 從檔案開頭寫入資料

看板C_and_CPP作者 (豆腐)時間15年前 (2009/08/11 12:03), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串1/2 (看更多)
請問一下,如果我想寫入同一個檔案2次,且第二次的內容要在第一次前面, 比方說: 第一次寫入"ABC"並關閉檔案。 第二次寫入"DEF"並關閉檔案。 開啟檔案後我希望內容是"DEFABC"。 我使用ofstream(檔案名稱,開啟模式)作為開啟檔案的方式,並且已知有6種開啟模式: ios::app :附加於檔案的尾端。 ios::ate :指向檔案尾端。 ios::binary :以二進制模式開啟。 ios::in :輸入檔案。 ios::out :輸出檔案。 ios::trunc :如果檔案內容存在就刪除。 第一次開檔我選擇以ios::trunc開啟,並且已經確保它能符合我的需求。 第二次開檔我就不太清楚要選什麼了? 目前已知可以先將不符合需求的ios::in、ios::trunc、ios::binary三種先剔除。 接著我嘗試過: ios::app ->依然從檔案尾端附加。 ios::app + seekp(0,ios::beg) ->依然從檔案尾端附加。 ios::out ->會將第一次寫入的內容刪除。 ios::out + seekp(0,ios::beg) ->會將第一次寫入的內容刪除。 ios::ate ->會將第一次寫入的內容刪除。 ios::ate + seekp(0,ios::beg) ->會將第一次寫入的內容刪除。 都不符合我的需求,請問是不是有方法能達到這樣的需求呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.67.181.135

08/11 12:07, , 1F
我的想法是要不從檔案尾寫入,讀取的時候倒著讀,或是把第
08/11 12:07, 1F

08/11 12:07, , 2F
一次寫入的內容全部讀進來 再重新寫入 //私心喜歡第一種
08/11 12:07, 2F

08/11 12:08, , 3F
啊, 倒著讀的意思是說seek到要讀取的地方後讀進來,在程式
08/11 12:08, 3F

08/11 12:08, , 4F
中再反過來看
08/11 12:08, 4F

08/11 12:31, , 5F
不好意思,我有點看不懂第一個方式,可以麻煩再說明一下
08/11 12:31, 5F

08/11 12:32, , 6F
嗎?
08/11 12:32, 6F

08/11 13:07, , 7F
第一次寫 CBA, 第二次寫 FED, 讀出 CBAFED 倒著印 DEFABC
08/11 13:07, 7F
文章代碼(AID): #1AWEsJwd (C_and_CPP)
文章代碼(AID): #1AWEsJwd (C_and_CPP)