看板 C_and_CPP 關於我們 聯絡資訊
請問一下,如果我想寫入同一個檔案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
suhorng:我的想法是要不從檔案尾寫入,讀取的時候倒著讀,或是把第 08/11 12:07
suhorng:一次寫入的內容全部讀進來 再重新寫入 //私心喜歡第一種 08/11 12:07
suhorng:啊, 倒著讀的意思是說seek到要讀取的地方後讀進來,在程式 08/11 12:08
suhorng:中再反過來看 08/11 12:08
icetofux:不好意思,我有點看不懂第一個方式,可以麻煩再說明一下 08/11 12:31
icetofux:嗎? 08/11 12:32
Ebergies:第一次寫 CBA, 第二次寫 FED, 讀出 CBAFED 倒著印 DEFABC 08/11 13:07