首页  >  文章  >  后端开发  >  如何有效地将二进制文件读入无符号字符向量?

如何有效地将二进制文件读入无符号字符向量?

Barbara Streisand
Barbara Streisand原创
2024-11-01 09:52:30351浏览

How to Efficiently Read a Binary File into a Vector of Unsigned Chars?

将二进制文件读入无符号字符向量的替代方法

您提供的用于将二进制文件读入无符号向量的函数chars 是一个可行的选项,但可以简化。

使用 std::istreambuf_iterator

std::istreambuf_iterator 方法很简洁,但假设使用 std: :istreambuf_iterator;即使读入无符号字符向量时也是如此。

使用 std::basic_ifstream

std::basic_ifstream方法明确表明读取 BYTE 的意图,但尚不清楚这是否是最合适的选择。

其他选项

避免显式转换为 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn