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



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

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

我还发现,以二进制模式打开文件会阻止不同操作系统要求的换行符自动转换。

所以我的问题是:当调用函数read()write()时,这种自动转换,例如;从nrn会发生?或者这种行为只是特定于operator<<.(也是operator>>

请注意,这里有一个类似但不太具体的问题。它没有给出明确的答案。在有/没有 ios::二进制模式的情况下打开流时使用读/写的区别

二进制和文本模式之间的区别在较低级别。

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

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

最新更新