【问题标题】:c++ clear the contents of a file after a specific positionc++在特定位置后清除文件内容
【发布时间】:2011-05-30 01:19:04
【问题描述】:

我想使用fstream 或者最好使用QFile 来删除文件特定位置(不是文件的开头或结尾)之后的内容。所以我首先使用QFile::seek(long)constant time 中的等价物跳到那个位置,然后我想删除剩余的内容,也是在恒定时间内。你推荐什么方法?

【问题讨论】:

    标签: c++ qt file-io truncate fstream


    【解决方案1】:

    您可以使用QFile::resize 将文件大小调整为您想要的大小。我敢打赌它在幕后使用truncate(请参阅 Andrew 的帖子)。

    【讨论】:

      【解决方案2】:

      查找...

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

      从这个site 中快速截取...

      如果之前的文件大于长度,多余的数据将被丢弃。

      您可能还会发现this answer 很有趣。

      【讨论】:

      • 您的答案在技术上是正确的(以及我一开始写的想法),但 OP 要求提供基于 QFile 的解决方案。谢天谢地,有一个。
      • 很公平,我知道这会起作用,所以我把它包括在内。我也不知道调整大小使用了截断,所以你会为我得到 +1。我也会留下这个答案,因为它是有效的,但不是最优的。
      • 很好的答案,但是是的,QFile::resize 答案确实解决了我正在寻找的问题。谢谢! +1
      【解决方案3】:

      seek() 之后的新位置视为文件的结尾。当你完成文件的工作后,写下从开始到那时的所有内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-13
        • 1970-01-01
        • 2014-03-14
        • 1970-01-01
        • 2011-08-12
        • 1970-01-01
        • 2011-02-11
        • 1970-01-01
        相关资源
        最近更新 更多