我很惊讶地发现,使用C++标准库没有找到合理的解决方案来调整文件大小。从原始文件读取数据,然后将其写入不同的文件似乎非常愚蠢和浪费。我只是想要一个调整大小的方法,可以裁剪超出指定大小的数据...有这样的方法吗?
编辑:如果我必须使用上述方法,那么我使用的缓冲区应该有多大?显然,我不能一次性读取整个文件,因为我正在处理相当大的文件。
编辑:如果我必须使用上述方法,那么我使用的缓冲区应该有多大?显然,我不能一次性读取整个文件,因为我正在处理相当大的文件。
<filesytem>
头文件已经在Visual Studio 2012中可用(在此处查看;搜索“filesystem”)。<filesystem>
头文件已经存在。我相信其他主要的供应商很快也会跟进。 - Benjamin Lindley实际上,没有跨平台的方法来调整文件大小,因为标准没有描述这个功能。但是,正如这里所述,有针对此目的的平台API:在Windows中查看_chsize()函数,在POSIX系统中查看truncate()和ftruncate()函数。
即使对于高级语言来说,不加载完整图像进行文件调整大小也是相当复杂的任务,这主要是图像处理 SDK(如Image Magick)的特性。
如果没有调整大小质量或支持的格式的具体要求,我想马克的答案将是最简单的方法。否则,您需要包含图形格式库并手动实现一些调整大小算法(或使用某些库)。
truncate
,可以将文件设置为指定的长度。我认为Windows也会提供类似的API。顺便问一下,您使用的是哪个平台? - Summer_More_More_Tea<unistd.h>
中的truncate()
是 POSIX C 库的一部分,这个可以用吗? - truthealitytruncate
是一个POSIX API。因此,跨平台并不是那么大的问题,只要您的操作系统API兼容POSIX标准即可。祝好运! - Summer_More_More_Tea