CFile与CStdioFile
CStdioFile继承自CFile,区别在于:
CFile不支持text模式,而CStdioFile支持text和binary两种模式,缺省在text模式.
CFile不会对回车换行做任何转换操作。
CStdioFile在text模式下会将\n转换为\r\n,所以如果输出\r\n,反而转成了\r\r\n
CStdioFile在binary模式下和CFile一致,不作回车换行的自动转换
CStdioFile比CFile多支持了WriteString接口,可以支持直接输出CString字符串,使用方便,
但此时输出字符串中不可能含字符0,因为0为CString的结束符。如果需要输出0到文件,还是要使用Write接口。WriteString的另一个区别是它会做字符表的转换,在Unicode版本的代码中(Project中定义了_Unicode),WriteString会自动将参数从 Unicode转到MBCS,再存入文件。而Write就不会做这个转换,Write只是按BYTE一个接一个写入文件,所以如果是Unicode的字符串,写到文件中也是Unicode的。不过WriteString在做字符转换时用了wctomb函数,这个函数又要求setlocale来设置正确的代码页,否则wctomb会在转中文时返回失败,所以WriteString在输出Unicode字符串时稍微麻烦一些。
相对来说,我更喜欢使用CStdioFile。
(要在控制台(win32 console)程序中使用MFC,只需包含afx .h并在工程设置中加入MFC支持即可。)
CFile不支持text模式,而CStdioFile支持text和binary两种模式,缺省在text模式.
CFile不会对回车换行做任何转换操作。
CStdioFile在text模式下会将\n转换为\r\n,所以如果输出\r\n,反而转成了\r\r\n
CStdioFile在binary模式下和CFile一致,不作回车换行的自动转换
CStdioFile比CFile多支持了WriteString接口,可以支持直接输出CString字符串,使用方便,
但此时输出字符串中不可能含字符0,因为0为CString的结束符。如果需要输出0到文件,还是要使用Write接口。WriteString的另一个区别是它会做字符表的转换,在Unicode版本的代码中(Project中定义了_Unicode),WriteString会自动将参数从 Unicode转到MBCS,再存入文件。而Write就不会做这个转换,Write只是按BYTE一个接一个写入文件,所以如果是Unicode的字符串,写到文件中也是Unicode的。不过WriteString在做字符转换时用了wctomb函数,这个函数又要求setlocale来设置正确的代码页,否则wctomb会在转中文时返回失败,所以WriteString在输出Unicode字符串时稍微麻烦一些。
相对来说,我更喜欢使用CStdioFile。
(要在控制台(win32 console)程序中使用MFC,只需包含afx .h并在工程设置中加入MFC支持即可。)

0 Comments:
发表评论
<< Home