我一直阅读并被告知,在处理二进制文件时,应该使用 read() 和 write() 而不是 << 和 >> 运算符,因为它们用于格式化数据。我还读到可以使用它们,但这是一个高级主题,我找不到任何人深入探讨和讨论的地方。
我最近看到了一些执行以下操作的代码:
std::ifstream file1("x", ios_base::in | ios_base::binary); std::ofstream file2("y", ios_base::app | ios_base::binary); 文件 1 << 文件 2.rdbuf();
当我指出在二进制文件中使用 << 运算符时,有人告诉我 rdbuf() 调用返回一个 streambuf * 并且 << 重载了 streambuf* 并进行了不带格式的直接复制,因此是安全的。
这是真的而且安全吗?效率如何?有什么陷阱吗?细节将不胜感激。
谢谢!