2014-06-09 83 views
2

对于std::stream/ostream/istream/...:是什么使用运营商<<>>或使用write()read()方法之间的区别?的std ::流的读/写操作VS << /运营商>>

我想对于二进制书写/阅读你应该使用write/read,但是对于文本/ ASCII是否有任何区别?

回答

3

writeread不理解关于正在打印的数据的任何内容 - 对于它们全部是字节。 <<>>另一方面了解您打印的内容,并且只能针对给定的数据类型进行重载。结果是读写通常更快 - 没有复杂的逻辑发生,我们只是将字节打印到流中。

+0

...另外,这并不涉及在较低层处理的文本/二进制文件鸿沟。 – Deduplicator

+0

'read'和'write'本身肯定会更快,但是由于它们处理未格式化的数据,我们必须添加格式化函数以将数据插入缓冲区并将其从缓冲区中提取出来。 (不可否认,格式化二进制数据通常比格式化文本更快,但您仍然无法完全忽略它。) –