二进制文件读取优化
要以最佳方式将二进制文件读取到无符号字符向量中,请考虑以下策略:
方法 1:自定义向量构建
<code class="cpp">std::vector<BYTE> readFile(const char* filename) { std::ifstream file(filename, std::ios::binary); std::streampos fileSize = file.tellg(); file.seekg(0, std::ios::beg); std::vector<BYTE> fileData(fileSize); file.read((char*) &fileData[0], fileSize); return fileData; }</code>
此方法根据文件大小显式创建具有正确大小的向量。但是,它将向量的数据转换为 char*,这是不可取的。
方法 2:Istreambuf 迭代器
<code class="cpp">std::vector<BYTE> readFile(const char* filename) { std::ifstream file(filename, std::ios::binary); return std::vector<BYTE>((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>()); }</code>
此方法使用将数据读入的迭代器内部有一个字符缓冲区。虽然它更短,但尽管读取无符号字符,它仍然需要字符迭代器。
方法 3:基本 Ifstream 专业化
<code class="cpp">std::vector<BYTE> readFile(const char* filename) { std::basic_ifstream<BYTE> file(filename, std::ios::binary); return std::vector<BYTE>((std::istreambuf_iterator<BYTE>(file)), std::istreambuf_iterator<BYTE>()); }</code>
此方法使用专门的输入文件流对于无符号字符。但是,它可能并不适合所有情况。
优化
注意事项
以上是如何优化将二进制文件读取到无符号字符向量中?的详细内容。更多信息请关注PHP中文网其他相关文章!