我很惊讶地说,我还没有找到如何调整使用C ++标准库文件的合理的解决方案。 这似乎完全是愚蠢的,浪费在从原始文件读入数据,然后将其写入到不同的文件。 我只是想调整大小的方法,将砍掉经过那里的大小超出数据...有什么事情做呢?
编辑:如果我必须用我上面所解释的方法,如何大应我的缓冲区是我使用的读/写? 我显然不能在一次读取整个文件,因为我有相当大的文件,在这里工作。
我很惊讶地说,我还没有找到如何调整使用C ++标准库文件的合理的解决方案。 这似乎完全是愚蠢的,浪费在从原始文件读入数据,然后将其写入到不同的文件。 我只是想调整大小的方法,将砍掉经过那里的大小超出数据...有什么事情做呢?
编辑:如果我必须用我上面所解释的方法,如何大应我的缓冲区是我使用的读/写? 我显然不能在一次读取整个文件,因为我有相当大的文件,在这里工作。
调整文件大小,而无需加载完整的图像是相当复杂的任务,甚至更高级别的语言,它主要是图像处理软件开发工具包类似的功能难懂的 。
如果有调整大小的质量或所支持的格式没有特殊要求我想马克的回答将是最简单的方法。 否则,你需要包括图形格式库和(或过多使用一些LIB)手动执行一些大小调整算法。
您可以使用所提供的功能Boost.Filesystem的 ,特别是其resize_file()函数。
请注意,Boost.Filesystem的是(计划于)包含在语言标准的未来的迭代。 见这里 。 那是,如果你不想在你的项目中使用升压好消息。
此外,作为什么@BenjaminLindley已经提到的, <filesytem>
头是在Visual Studio 2012已经可以( 在这里看到 ,搜索“文件系统”)。
事实上,没有用于调整文件跨平台的方法,因为标准不描述这个功能。 但是,因为据说这里 ,有平台API用于此目的:请参阅Windows _chsize()函数,截断()和ftruncate()函数POSIX系统。