ここのキャンパスの知識豊富な学生のほとんどが、バイナリ ファイルの I/O はフォーマットされた I/O よりも常に高速であると言っていました。少しグーグルで調べた結果、バイナリ I/O を実現する最も効率的な方法は、一度に各値をファイルから直接ストリーミングするのではなく、4k や 8k のチャンクなどの大きなデータ チャンクを読み込むことであることがわかりました。次に、そのバッファからデータを解析します。私の質問は、fstream を使用してファイルからデータのチャンクを取得し、それを 8192 バイトの char 配列に格納したとします。約 30 バイトのヘッダーがあり、その後のすべてのデータはそれぞれ 72 バイトの構造のようだったとしましょう。これにより、最後に 56 バイトの不完全なデータが残り、構造体に読み込むことができませんでした。効率を最大化するためにこれを処理するにはどうすればよいですか (はい、C++ ストリームを使用します。ここで C++ ストリームについて泣き言を言うのはやめてください。それについて何十もの議論を聞いたことがあります。これは完全にバイナリ i/o に関する質問であり、i/o の特定のメディアの有効性ではありません)。末尾の 56 バイトを未使用のままにしておくか、次のバッファの末尾と最初の 16 バイトを一緒にフランケンシュタインにしようとするか、これにアプローチする別の方法がありますか? 私の質問はまた、解析する前にこのようにチャンクをバッファに読み込むのはなぜですか? 逆に、これが真実だと思わない場合は、可能であればその理由を説明してください。御時間ありがとうございます。解析する前に、このようにチャンクをバッファに読み込む方が速いのはなぜですか? 逆に、これが真実だと思わない場合は、可能であればその理由を説明してください。御時間ありがとうございます。解析する前に、このようにチャンクをバッファに読み込む方が速いのはなぜですか? 逆に、これが真実だと思わない場合は、可能であればその理由を説明してください。御時間ありがとうございます。