我一直读到并听说,处理二进制文件时应该使用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*,并进行无格式的直接复制,因此是安全的。
这是真的,也是安全的吗?效率如何?有什么要注意的地方?详细信息将不胜感激。
谢谢!
最近我看到一些代码做了以下操作:
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*,并进行无格式的直接复制,因此是安全的。
这是真的,也是安全的吗?效率如何?有什么要注意的地方?详细信息将不胜感激。
谢谢!