將二進位檔案讀入無符號字元向量的替代方法
您提供的用於將二進位檔案讀入無符號符號向量的函數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中文網其他相關文章!