バイナリ ファイル読み取りの最適化
バイナリ ファイルを unsigned char のベクトルに最適に読み取るには、次の戦略を検討してください。
方法 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 Iterator
<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>
このメソッドは、データを読み取るイテレータを使用します。内部的にはcharバッファ。短いとはいえ、unsigned char を読み取るにもかかわらず、char イテレータが必要です。
メソッド 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 中国語 Web サイトの他の関連記事を参照してください。