为什么在fstream.h中不包含ifstream的对象声明?
二进制文件和文本文件的主要有什么区别?? 问题点数:20、回复次数:6Top
1 楼adintr(www.adintr.com)(风流总被雨打风吹去)回复于 2006-03-03 14:35:20 得分 2
1.对 EOF 的处理方式,
...(下面的继续啊)Top
2 楼jobs002(Oh! Office)回复于 2006-03-03 15:17:03 得分 0
谢谢顶了Top
3 楼ddddh(叶君临)回复于 2006-03-03 15:22:40 得分 8
在unix下面貌似没有区别,在windows下面主要是\r\n的问题。
windows的文本文件使用\r\n作为换行符的,所以读出来以后会自动把\r\n转换成一个\n,写回去的时候,看到一个\n,会写\r\n进去。这样读出来的东西,和写回去的东西就不一致了。有时候就会出问题。
比如对一个文件算md5,你读出来的数据和文件里面的不同,算出来的MD5 hash肯定也不同。Top
4 楼jobs002(Oh! Office)回复于 2006-03-03 15:27:11 得分 0
谢谢,我的文件里面有时就会出现莫名奇妙的字符,还有一个问题,顶一顶Top
5 楼jobs002(Oh! Office)回复于 2006-03-03 20:19:16 得分 0
顶Top
6 楼ostrich2fly(ostrich2fly)回复于 2006-03-03 21:57:14 得分 10
打开方式的区别在于对换行的处理,文本模式把换行处理为"\n"
二进制模式打开文件,windows下换行为两个字节
另一个是和文件内容有关的,类似shell脚本和elf执行档之间的区别。
在这个意义上,所谓文本文件可以理解为仅包括了当前locale下的字符集,没有其他字符
的文件。
表现在视觉上,就是这种文件用文本编辑器打开没有乱码。
而二进制文件可能包括了一些当前locale下的字符集之外的字节。
用文本编辑器打开可能看到乱码或出现不能正常显示的字符。
因为有内容上的区别,所以在Windows/DOS下写程序时要注意打开的方式。
一般来说处理文本文件的时候(比如说你要写一个编译器,或者读配置文件)最好用t方式
打开,用fprint这样的函数写文件。
这样可以自动扩展\n。(大家都有在Windows下用记事本打开unix格式的文本文件的经历吧
?)
处理二进指文件时(比方说处理位图、写结构体到文件中)最好用b方式打开。因为这些数
据的信息是基于字节的,再扩展0x0A就错了。
Top




