fstream从二进制文件的末尾删除N个字节

时间:2014-02-03 14:46:23

标签: c++ fstream

是否可以使用fstream(或类似的东西)从C ++中的二进制文件末尾删除N个字节?我不想读取整个文件,剪切并再次写入,但由于它是从文件的末尾开始,它似乎不应该是这样的问题。

感谢您的任何建议。

2 个答案:

答案 0 :(得分:6)

我不知道一种通用的C ++(独立于平台)方式,而无需编写新文件。但是,在POSIX系统(Linux等)上,您可以使用ftruncate() function。在Windows上,您可以使用SetEndOfFile()

这也意味着您需要使用本机函数而不是fstream来打开文件,因为您需要这些函数的本机描述符/句柄。

编辑:如果你能够使用Boost库,它的文件系统库中有一个resize_file() function可以做你想要的。

答案 1 :(得分:1)

更新

现在在C ++ 17中,您可以使用resize_file中的filesystem

Coliru上直播