C++ ifstream,ofstream:原始read()/ write()调用与二进制模式下的打开文件有什么区别?

use*_*501 5 c++ file-io ifstream ofstream

这个问题涉及在向文件读取和写入数据时ifstream和ofstream的行为.

通过阅读stackoverflow.com,我已经设法发现operator<<(流插入运算符)在输出之前将诸如双精度的对象转换为文本表示,并且分别在存储在存储器(二进制格式)中时调用read()write()读取和写入原始数据.编辑:这很明显,这里没什么意外.

我还发现以二进​​制模式打开文件会阻止不同操作系统根据需要自动转换换行符.

所以我的问题是:这是自动翻译,例如; 从\n\r\n调用函数时发生的read()write()?或者这种行为只是特定于operator<<.(还有operator>>.)

请注意,这里有一个类似但稍微不那么具体的问题.它没有给出明确的答案.使用/不使用ios :: binary模式打开流时使用读/写的区别

650*_*502 4

二进制和文本模式之间的差异处于较低级别。

如果您以文本模式打开文件,即使使用readwrite操作,您也会获得翻译后的数据。

另请注意,仅当该位置是从前一个(或 0)获取时,才允许您seek访问文本文件中的位置tell。为了能够进行随机定位,文件必须以二进制模式打开。