バイナリ ファイルの読み取りと書き込み
バイナリ ファイルをバッファに読み取り、その後そのバッファを別のファイルに書き込もうとすると、適切なアプローチを使用することが重要です。提供されたコード フラグメントでは、バッファがファイルの最初の行から数個の ASCII 文字のみをキャプチャし、その内容全体を取得できないというエラーが発生しました。
この問題を解決するには、次の 2 つの推奨アプローチがあります。
C の使用アプローチ:
C のストリーム反復機能を利用して、次のコードは入力バイナリ ファイルの内容を出力ファイルに効率的にコピーします:
#include <fstream> #include <iterator> #include <algorithm> int main() { std::ifstream input("C:\Final.gif", std::ios::binary); std::ofstream output("C:\myfile.gif", std::ios::binary); std::copy( std::istreambuf_iterator<char>(input), std::istreambuf_iterator<char>(), std::ostreambuf_iterator<char>(output)); }
変更のためのバッファの使用:
データが変更のためにバッファに保存する必要がある場合は、次のアプローチを使用できます。
#include <fstream> #include <iterator> #include <vector> int main() { std::ifstream input("C:\Final.gif", std::ios::binary); // Copies all data into buffer std::vector<unsigned char> buffer(std::istreambuf_iterator<char>(input), {}); }
これらの手法を実装すると、コードはバイナリ ファイル全体をバッファに正常に読み込むことができます。または出力ファイルに直接書き込んで、正確なデータ転送と操作を保証します。
以上がC でバイナリ ファイル全体を正しく読み書きする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。