欢迎来到天天文库
浏览记录
ID:57662394
大小:38.00 KB
页数:6页
时间:2020-08-31
《CStdioFile的用法详细解析.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、CStdioFile的用法详细解析CStdioFile不支持Duplicate,LockRange,和UnlockRange这几个CFile函数。如果在CStdioFile中调用了这几个函数,将会出现CNoSupported异常关于CStdioFileCStdioFile继承自CFile,一个CStdioFile对象代表一个用运行时函数fopen打开的C运行时流式文件。流式文件是被缓冲的,而且可以以文本方式(缺省)或二进制方式打开。文本方式提供对硬回车—换行符对的特殊处理。当你将一个换行符(0x0A)写入一个
2、文本方式的CStdioFile对象时,字节对(0x0D,0x0A)被发送给该文件。当你读一个文件时,字节对(0x0D,0x0A)被翻译为一个字节(0x0A)。CStdioFile不支持Duplicate,LockRange,和UnlockRange这几个CFile函数。如果在CStdioFile中调用了这几个函数,将会出现CNoSupported异常。CStdioFile::ReadString(LPTSTRlpsz,UINTnMax);读取一行文本到缓冲区,遇到“0x0D,0x0A”时停止读取,并且去掉硬回
3、车“0x0D”,保留换行符“0x0A”,在字符串末尾添加“ ”(0x00)。nMax个字符里包含0x00这个字符。分析如下:1)如果nMax<=字符数,读取(nMax-1)个字符+0x002)如果nMax=字符数+1,读取nMax个字符+0x003)如果nMax>字符数,读取nMax个字符+0x0A+0x00CStdioFile::ReadString(CString&rString);(重载)读取一行文本到rString,遇到回车换行符停止读取。回车和换行符不读到rString,而且末尾也没有添加“ ”
4、。CStdioFile::WriteString(LPCTSTRlpsz);(不支持CString直接写入)将一个缓冲区中的数据写入与CStdioFile对象关联的文件中。结束的空字符(“ ”)不被写入该文件。lpsz中的所有换行符都被以一个硬回车换行符对写入该文件,即“”被转化成“r”写入到文件里。CFile的派生类CStdioFile提供了对文件进行流式的操作功能。其中函数voidCStdioFile::WriteString(LPCTSTRlpsz)写入一个字符串,需要给字符串lpsz的末尾
5、加上换行标志”r”;函数boolCStdioFile::ReadString(CString&rString)从文件中读取一行,如果文件未读完返回true,否则返回false。比如:写入文件的例子代码如下://创建文件CStdioFilefile;file.Open("ts.txt",CFile::modeCreate
6、CFile::modeWrite);//写入文件CStringstr;str.Format("%sr","hello!Iamtalkingmute!");file.Seek(0,C
7、File::end);file.WriteString(str);//关闭文件file.Close();比如:读文件的例子代码如下:CStringstrText=“”;CStringszLine=“”;//打开文件CStdioFilefile;file.Open("ts.txt",CFile::modeRead);//逐行读取字符串while(file.ReadString(szLine)){strText+=szLine;}MessageBox(strText);//关闭文件file.Close();CSt
8、dioFile类的声明保存在afx.h头文件中。CStdioFile类不支持CFile类中的Duplicate、LockRange、UnlockRange函数,如果你使用了,会得到CNotSupportedException类的错误。CStringFile类默认的是按照Text模式操作文件。CFile类默认的是按照二进制模式操作文件。这里大致说明一下二进制模式和Text模式的区别。二进制模式:对于一行的结尾我们必须输入”r”,才能表示回车换行的效果。Text模式:”r”回车的工作是自动完成的,我们只需
9、要写入””即可。所以我们再使用文本模式时要注意,当我们从外部读入文件时,”r”会被翻译成””,写入文件时,我们对于回车换行只需提供””,即可,”r”会被写入到文件中。m_pStream成员变量:打开文件的指针。构造函数:CStdioFile();CStdioFile(FILE*pOpenStream);CStdioFile(LPCTSTRlpFileName,UINTnOpe
此文档下载收益归作者所有