C&C++
发布时间:2022-04-03 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了文件的文本打开方式和二进制打开方式有什么区别?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在学习了 C++
文件流对象使用
open() 打开
文件后,我们知道它的第二个参数是
一个字符串,用来表示
文件打开方式,即如果使用 ios::binary,则表示以二进制方式打开
文件;反之,则以文本
文件的方式打开
文件。
文本文件和二进制文件的区别
根据我们以往的经验,文本
文件通常用来保存肉眼可见的字符,比如 .txt
文件、.c
文件、.dat
文件等,用文本编辑器打开这些
文件,我们能够顺利看懂
文件的@L_
618_16@。
二进制
文件通常用来保存视频、
图片、程序等不可阅读的@L_
618_16@,用文本编辑器打开这些
文件,会看到一堆乱码,根本看不懂。
但是从物理上讲,二进制
文件和字符
文件并没有什么区别,它们都是以二进制的形式保存在磁盘上的数据。
我们之所以能看懂文本
文件的@L_
618_16@,
是因为文本
文件中采用的是 ASCII、UTF-8、GBK 等字符编码,文本编辑器可以识别出这些编码格式,并将编码值转换成字符展示出来。
而二进制
文件使用的是 mp4、gif、exe 等特殊编码格式,文本编辑器并不认识这些编码格式,只能按照字符编码格式胡乱解析,所以就成了一堆乱七八糟的字符,有的甚至都没见过。
如果我们新建
一个 mp4
文件,给它写入一串字符,然后再用文本编辑器打开,你一样可以读得懂,有兴趣的读者可以自己
试试。
总的来说,不同类型的
文件有不同的编码格式,必须使用对应的程序(软件)才能正确解析,否则就是一堆乱码,或者
无法使用。
两种打开方式的区别
文本方式和二进制方式并没有本质上的区别,只是对于换行符的处理不同。
在 UNIX/Linux 平台中,用文本方式或二进制方式打开
文件没有任何区别,因为文本
文件以 \n(ASCII 码为 0x0a)作为换行符号。
但在 Windows 平台上,文本
文件以连在一起的 \r\n 作为换行符号。如果以文本方式打开
文件,当读取
文件时,程序会将
文件中所有的 \r\n 转换成
一个字符 \n。也就是说,如果文本
文件中有连续的两个字符是 \r\n,则程序会丢弃前面的 \r,只读入 \n。
同样当写入
文件时,程序会将 \n 转换成 \r\n 写入。也就是说,如果要写入的@L_
618_16@中有字符 \n,则在写入该字符前,程序会
自动先写入
一个 \r。
因此在 Windows 平台上,如果用文本方式打开二进制
文件进行读写,读写的@L_
618_16@就可能和
文件的@L_
618_16@有出入。
总的来说,Linux 平台使用哪种打开方式都行;Windows 平台上最好用 "ios::in | ios::out" 等打开文本文件,用 "ios::binary" 打开二进制文件。但无论哪种平台,用二进制方式打开文件总是最保险的。
大佬总结
以上是大佬教程为你收集整理的文件的文本打开方式和二进制打开方式有什么区别?全部内容,希望文章能够帮你解决文件的文本打开方式和二进制打开方式有什么区别?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。