バイナリ ファイルの効率的な読み取りと書き込み
バイナリ ファイルの読み取りと書き込みを試みると、結果のバッファに意図したデータの一部。この問題が発生した場合、この記事では、これらの制限に対処する 2 つの代替アプローチを提供します。
C 固有のアプローチ
次の C コードでは、copy 関数とストリーム反復子を使用して、バッファリングせずにファイルの内容を直接コピーします:
#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)); }
このアプローチでは、次のことが維持されます。ファイルの整合性を確保し、正確なデータ転送を保証します。
Vector によるバッファリング
変更のためにバッファ内のファイルの内容が必要な場合、次のコードは vector とストリーム反復子:
#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 サイトの他の関連記事を参照してください。