バイナリ ファイルを符号なし文字のベクトルに効果的に読み取るにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-01 09:51:30
オリジナル
538 人が閲覧しました

How to Effectively Read Binary Files into a Vector of Unsigned Chars?

バイナリ ファイルを符号なし文字のベクトルに読み取る

バイナリ ファイルを符号なし文字のベクトルに読み取るタスクを実行すると、いくつかのオプションが表示されます。

オプション 1: char への明示的なキャスト*

このアプローチは、char* への明示的なキャストを使用してデータをベクトルに読み取ります:

<code class="cpp">std::vector<BYTE> readFile(const char* filename) {
    // ...
    file.read((char*) &fileData[0], fileSize);
    return fileData;
}</code>
ログイン後にコピー

機能しますが、明示的なキャストが必要ですが、これが不安の原因になる可能性があります。

オプション 2: char を使用した istreambuf_iterator

テンプレート引数として char を使用して std::istreambuf_iterator を使用すると、簡素化されます。コード:

<code class="cpp">std::vector<BYTE> readFile(const char* filename) {
    // ...
    return std::vector<BYTE>(std::istreambuf_iterator<char>(file),
                            std::istreambuf_iterator<char>());
}</code>
ログイン後にコピー

ただし、ベクトルに unsigned char が含まれていても、イテレータでは引き続き char が使用されます。

オプション 3: BYTE を使用した Basic_ifstream

このオプションは、タイプとして BYTE を使用する入力ファイル ストリームを明示的に宣言し、意図を明確にします。

<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>
ログイン後にコピー

basic_ifstream の適合性は、特定の使用例によって異なります。

istreambuf_iterator: シンプルさと効率

std::istreambuf_iterator はシンプルさを提供しますが、バイナリ データにとって最も効率的なオプションではない可能性があります。 >> を使用します。データを解釈するため、不要なオーバーヘッドが発生する可能性があります。 std::copy などの代替アプローチを検討してください。

その他の考慮事項

  • ファイル ストリームが開いていることを確認します。
  • さまざまなパフォーマンスをテストします。バイナリ データのオプション。
  • 改行のスキップを避けるために、バイナリ ファイルの場合は std::ios::skipws を false に設定します。

以上がバイナリ ファイルを符号なし文字のベクトルに効果的に読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!