2014-06-09 86 views
2

對於std::stream/ostream/istream/...:是什麼使用運營商<<>>或使用write()read()方法之間的區別?的std ::流的讀/寫操作VS << /運營商>>

我想對於二進制書寫/閱讀你應該使用write/read,但是對於文本/ ASCII是否有任何區別?

回答

3

writeread不理解關於正在打印的數據的任何內容 - 對於它們全部是字節。 <<>>另一方面瞭解您打印的內容,並且只能針對給定的數據類型進行重載。結果是讀寫通常更快 - 沒有複雜的邏輯發生,我們只是將字節打印到流中。

+0

...另外,這並不涉及在較低層處理的文本/二進制文件鴻溝。 – Deduplicator

+0

'read'和'write'本身肯定會更快,但是由於它們處理未格式化的數據,我們必須添加格式化函數以將數據插入緩衝區並將其從緩衝區中提取出來。 (不可否認,格式化二進制數據通常比格式化文本更快,但您仍然無法完全忽略它。) –