我想從文本文件中刪除一些信息而不移動它的所有記錄。例如給出了一個文本文件customers.txt
。它有很多記錄由#
分隔符分隔。並且每條記錄包含由;
分隔的字段。像這樣:1665;John;Smith
給出一個客戶ID,我想刪除一個具有相應ID的客戶。我可以在文件中找到記錄的偏移量和長度,但不知道如何刪除它。我必須重寫整個文件嗎?如何從文件中刪除記錄?
注:我使用標準C++與g ++ 4.5和libst4。
我想從文本文件中刪除一些信息而不移動它的所有記錄。例如給出了一個文本文件customers.txt
。它有很多記錄由#
分隔符分隔。並且每條記錄包含由;
分隔的字段。像這樣:1665;John;Smith
給出一個客戶ID,我想刪除一個具有相應ID的客戶。我可以在文件中找到記錄的偏移量和長度,但不知道如何刪除它。我必須重寫整個文件嗎?如何從文件中刪除記錄?
注:我使用標準C++與g ++ 4.5和libst4。
你有幾個選擇。 1)重寫文件的其餘部分,使其超出要刪除的記錄。 2)用某些指示符替換記錄,將其刪除,並在解析文件時處理該記錄(例如用#或其他特殊字符替換正在刪除的條目)。
+1發佈相同,但稍後;) – 2011-03-01 14:44:26
好的。我會替換那樣的。 (我只是想知道是否有辦法將文件拆分成一些碎片,像操作系統一樣......) – 2011-03-01 14:55:30
@sorush沒有原生的方式來做到這一點。這並不是說如果你願意,你不能寫一個圖書館去做。 – Lou 2011-03-01 16:02:37
是的,你必須重寫整個文件。
我建議這個算法:
可能重複的[如何只覆蓋部分文件在c + +](http://stackoverflow.com/questions/2530274/how-to-overwrite-only-part-of-a-file-in-c ) – 2011-03-01 14:42:39
@Simone:哎呀。沒有看到它。刪除了無用的評論。謝謝。 – ereOn 2011-03-01 14:43:45