2011-05-30 45 views
3

我想要使用fstream或優選QFile刪除文件特定位置(這不是文件的開始或結尾)後的內容。因此,我首先跳轉到QFile::seek(long)constant time中的等效位置,然後我想在等待時間內刪除其餘的內容。你推薦什麼方法?C++清除特定位置後文件的內容

回答

8

您可以使用QFile::resize將文件大小調整爲所需的大小。我敢打賭,它在幕後使用truncate(請參閱Andrew的文章)。

0

考慮將seek()之後的新位置作爲文件的結尾。當你完成對文件的處理時,從開始直到那一刻寫下所有內容。

3

查找...

#include <unistd.h> 
int ftruncate(int fildes, off_t length); 
int truncate(const char *path, off_t length); 

從這個site產生了下子......

如果文件以前是不是長度,額外的數據將被丟棄。

您還可能會發現this answer有趣。

+0

你的回答在技術上是正確的(我首先想到的是),但OP要求提供基於QFile的解決方案。謝天謝地,還有一個。 – 2011-05-30 01:24:12

+0

夠公平的,我知道這會工作,所以我把它包括在內。我也不知道調整大小使用截斷,所以你會得到我的+1。我也會留下這個答案,因爲它是有效的,但不是最優的。 – 2011-05-30 01:26:48

+0

很好的答案,但是,'QFile :: resize'答案確實解決了我一直在尋找的問題。謝謝! +1 – 2011-05-30 01:35:41