将二进制文件读入无符号字符向量的替代方法
您提供的用于将二进制文件读入无符号向量的函数chars 是一个可行的选项,但可以简化。
使用 std::istreambuf_iterator
std::istreambuf_iterator 方法很简洁,但假设使用 std: :istreambuf_iterator
使用 std::basic_ifstream
std::basic_ifstream
其他选项
避免显式转换为 char 的替代方法* 是:
<code class="cpp">std::vector<BYTE> readFile(const char* filename) { std::ifstream file(filename, std::ios::binary); file.unsetf(std::ios::skipws); // Prevent skipping newlines in binary mode std::streampos fileSize = file.tellg(); file.seekg(0, std::ios::beg); std::vector<BYTE> fileData; fileData.reserve(fileSize); fileData.insert(fileData.begin(), std::istream_iterator<BYTE>(file), std::istream_iterator<BYTE>()); return fileData; }</code>
此方法在插入数据之前在向量中保留必要的容量,可能消除昂贵的调整大小的需要。
直接复制二进制数据
更有效的方法是直接将二进制数据复制到向量中,而不使用迭代器。但是,这需要依赖于底层文件 I/O 库的特定于平台的实现。
性能注意事项
比较性能时,请考虑测试大型二进制文件评估矢量调整大小的影响以及不同方法的开销。
以上是如何有效地将二进制文件读入无符号字符向量?的详细内容。更多信息请关注PHP中文网其他相关文章!