私はいつも読んでいて、バイナリファイルを扱うときは、フォーマットされたデータで使用するためのものであるため、 << および >> 演算子ではなく read() および write() を使用する必要があると言われています。それらを使用できることも読みましたが、それは高度なトピックであり、誰も飛び込んで議論している場所を見つけることができません。
最近、次のことを行うコードを見ました。
std::ifstream file1("x", ios_base::in | ios_base::binary); std::ofstream file2("y", ios_base::app | ios_base::binary); file1 << file2.rdbuf();
バイナリ ファイルでの << 演算子の使用を指摘したとき、rdbuf() 呼び出しは streambuf * を返し、 << は streambuf* をオーバーロードし、書式設定なしで直接コピーを行うので安全であると言われました。
これは真実で安全ですか?効率はどうですか?落とし穴はありますか?詳細をいただければ幸いです。
ありがとう!