二進位檔案讀取最佳化
要以最佳方式將二進位檔案讀取到無符號字元向量中,請考慮以下策略:
方法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中文網其他相關文章!