Я всегда читал и говорил, что при работе с бинарными файлами, которые следует использовать 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 * и делает прямую копию без форматирования и поэтому безопасен.
Это правда и безопасно? Как насчет эффективности? Любые ошибки? Детали будут высоко оценены.
Спасибо!