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