C/C++中二进制与文本方式打开文件的区别

二进制与文本文件主要有两个大的区别:

1、换行符的区别:

Windows平台下 
对于Windows文本文件,它们使用回车和换行来表示换行符;如果以“文本”方式打开文件,当读取文件的时候,系统会将所有的"/r/n"转换成"/n";当写入文件的时候,系统会将"/n"转换成"/r/n"写入。 
如果以"二进制"方式打开文件,则读/写都不会进行这样的转换。

在Unix/Linux平台下

对于Unix和Linux文件,使用换行来表示换行符。而C++是从Unix系统上发展而来的,也使用换行来表示换行符,所以“文本”与“二进制”模式没有区别。


2、编码存储的区别:

文本模式:读取文件时,首先读取文件物理上所对应的二进制比特流(前面已经说了,存储都是二进制的),然后按照你所选择的解码方式来解释这个流,然后将解释结果显示出来。如果你选取的解码方式是ASCII码形式(ASCII码的一个字符是8个比特),接下来,它会8个比特8个比特地来解释这个文件流。

二进制模式:不需要转换,直接读取或者写入。


还有一点需要注意的是,数据有字符型和非字符型(数)两种。按文本方式写文件指的是将数据转换为对应的字符型数据之后再写入文件。对于非字符型数据,都要进行转换处理。例如:int m = 12; 以及 double f = 2.3;,分别按照 "%d"、"%lf" 方式将 m 和 f 写入文件的时候,写入的分别是 '1'、'2' 两个字符以及 '2'、'.'、'3' 等三个字符的ASCII码值。显然,如果按照二进制方式写的话,在文件中一般 m 要占 4 个字节、f 要占 8 个字节。

总的来说,在windows平台下,C/C++处理文件时,当写缓冲区中无换行符''/n''(0AH),文本写与二进制写的结果是一样的,同理,当文件中不存在''/r/n''(0DH0AH)时,文本读与二进制读的结果一样。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值