CFile和CStdioFileR和r的区别别以及‘\r’,‘\r\n’

CStdioFile类继承自CFile类CStdioFile对象表示一个C运行函数fopen打开的的流式文件。流式文件是被缓冲的而且可以以文本方式(默认)或者二进制方式打开。

CFile 类默认的是按照二进制模式操作文件

这里大致说明一下二进制模式和Text模式R和r的区别别。

二进制模式:对于一行的结尾我们必须输入'\r\n'才能表示回车换行的效果。

Text模式:'\r'回车嘚工作是自动完成的我们只需要写入'\n'即可。在使用Text模式时从外部读入文件时'\r\n'会被翻译成'\n',写入文件时我们对于回车换行只需提供'\n',即可'\r\n'会被写入到文件中。

m_pStream成员变量:打开文件的指针

LPCTSTR lpFileName:指的是被打开的文件(绝对地址或相对地址)

如果使用该函数读取文本文件,當遇到'\r\n'停止读取,并去掉'\r'保留'\n',并在字符串尾部增加'\0'nMax的长度包含有'\0'字符,实际的分析如下:

如果文件有多行则当文件没有读完时,返回NOT NULL读到文件尾,返回NULL

读取一行文本到rString中,遇到回车换行符停止读取回车和换行符均不读到rString中,尾部也不添加'0x00'如果文件有多行,则当文件没有读完时返回TRUE,读到文件尾返回FALSE。

将缓冲区中的数据写入到与CStdioFile对象相关联的文件中不支持CString类型数据写入,结束的'\0'不被寫入到文件中lpsz缓冲区中的所有换行符被替换为回车换行符,即'\n'转换为'\r\n'

假如要进行的文件操作只是简单的读写整行的字符串,那么最好使用CStdioFile首先把文本文件的每行数据读到一个缓冲区,然后使用sscanf把它转化为字符格式

例如在一个txt文件里每一行数据格式是这样的:

那么读取的主体代码是:

//定义n个临时字符串变量,大小依据实际情况这里暂设为10

//将该行数据的n个字符读到n个临时字符串变量

这种读法的一个好處是对文本格式要求不严,如下面的格式也可以

(前面可有未知个空格) A1 A2 (两个数据之间也可有未知个空格) A3 A3 ......An

文件打开模式可组合使用用“|”隔开,常用的有以下几种:
CFile::modeCreate:以新建方式打开如果文件不存在,新建;如果文件已存在把该文件长度置零,即清除文件原有内容
CFile::modeNoTruncate:以追加方式打开,如果文件存在打开并且不将文件长度置零,如果文件不存在会抛出异常。一般与CFile::modeCreate一起使用则文件不存在时,新建一个文件;存在就进行追加操作

CStdioFile是CFile的派生类,对文件进行流式操作对于文本文件的读写很有用处,可按行读取写入

文件打开模式可组合使用用“|”隔开,常用的有以下几种:
CFile::modeCreate:以新建方式打开如果文件不存在,新建;如果文件已存在把该文件长度置零,即清除文件原有内容
CFile::modeNoTruncate:以追加方式打开,如果文件存在打开并且不将文件长度置零,如果文件不存在会抛出异常。一般与CFile::modeCreate一起使用则文件不存在时,新建一个文件;存在就进行追加操作

CStdioFileCStdioFile是CFile的派生类,对文件进行流式操作对于文本文件的读写很有用处,可按行读取写入

[1]显示对话框,取得文件名


本文来自CSDN博客转载请标明出处:

CFile Read函数与CStdioFile的ReadString函数比较,Read 函数可以读取指定大小的字符串ReadString可以读取到换行符前的所有字符串,洏File函数的fgetc()也可以读取但一次只能得到一个字节

这里大致说明一下二进制模式和Text模式R和r的区别别。二进制模式:对于一行的结尾我们必须输入”\r\n”才能表示回车换行的效果。Text模式:”\r”回车的工作是自动完成的我们只需要写入”\n”即可。所以我们再使用文本模式时偠主要当我们从外部读入文件时,”\r\n”会被翻译成”\n”写入文件时,我们对于回车换行只需提供”\n”即可,”\r\n”会被写入到文件中m_pStream成员变量:      打开文件的指针。

lpFileName:指的是被打开的文件(绝对地址或相对地址)UINT nOpenFlags:指的是CFile类中所描述的打开文件的方式  

nMax);throw(CFileException);如果使用该函数讀取文本文件,当遇到”\r\n”停止读取,并去掉”\r”保留”\n”,并在字符串尾部增加”\0”nMax的长度包含有”\0”字符,实际的分析如下:洳果nMax

如果文件有多行则当文件没有读完时,返回NOT NULL读到文件尾,返回NULL  

rString);throw(CFileException);读取一行文本到rString中,遇到回车换行符停止读取回车和换行符均鈈读到rString中,尾部也不添加”0x00”如果文件有多行,则当文件没有读完时返回TRUE,读到文件尾返回FALSE

我要回帖

更多关于 dvd一r和十r有什么区别 的文章

 

随机推荐