gpt4 book ai didi

具有二进制数据的 C++ fstream << 和 >> 运算符

转载 作者:可可西里 更新时间:2023-11-01 15:22:14 25 4
gpt4 key购买 nike

我一直读到有人告诉我,在处理二进制文件时,应该使用 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* 并进行了没有格式的直接复制并且是因此安全。

这是真的而且安全吗?效率怎么样?有什么问题吗?详细信息将不胜感激。

谢谢!

最佳答案

是的(参见 27.6.2.5.3/6,其中描述了 << 对 streambuf 的重载)。

关于具有二进制数据的 C++ fstream << 和 >> 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1278259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com