首頁 >後端開發 >C++ >如何有效地將二進位檔案讀入無符號字元向量?

如何有效地將二進位檔案讀入無符號字元向量?

Barbara Streisand
Barbara Streisand原創
2024-11-01 09:52:30440瀏覽

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