CStdioFile
函数特征
CStdioFile是一个函数特征,继承自CFile,它可以建立一个CStdioFile对象,代表一个用运行时函数fopen打开的C运行时流式文件。
定义
表示c.运行时流文件标记为打开该运行时函数fopen
流式文件是被缓冲加载到内存中的,而且可以以文本方式(缺省)或二进制方式打开。文本方式提供对硬回车— 换行符对的特殊处理。当你将一个换行符(0x0A)写入一个文本方式的CStdioFile 对象时,字节对(0x0D,0x0A)被发送给该文件。当你读一个文件时,字节对(0x0D,0x0A)被翻译为一个换行符(0x0A)。
CStdioFile 不支持Duplicate,LockRange,和UnlockRange 这几个CFile 函数。如果在CStdioFile 中调用了这几个函数,将会出现CNoSupported 异常。
CStdioFile类默认的是按照Text模式操作文件,CFile 类默认的是按照二进制模式操作文件。
二进制模式:对于一行的结尾我们必须输入' ',才能表示回车换行的效果。
Text模式:' '回车的工作是自动完成的,我们只需要写入' '即可。在使用Text模式时从外部读入文件时,' '会被翻译成' ',写入文件时,我们对于回车换行只需提供' ',即可,' '会被写入到文件中。
构造函数
CStdioFile();
CStdioFile( CAtlTransactionManager* pTM);
CStdioFile( FILE* pOpenStream );//参数(pOpenStream)是c运行函数fopen调用后返回的文件指针。
CStdioFile( LPCTSTR lpszFileName,UINT nOpenFlags );
CStdioFile( LPCTSTR lpszFileName)//(lpszFileName)是被打开的文件(绝对地址或相对地址)
参数解释
LPCTSTR lpszFileName,//被打开的文件的路径(绝对地址或相对地址);
FILE* pOpenStream;//c运行函数fopen调用后返回的文件指针;
UINT nOpenFlags; //指的是CFile类中所描述的打开文件的方式。可以按位指定多个选项通过使用或(|)运算符;
CAtlTransactionManager* pTM;//为CAtlTransactionManager对象的指针。
成员函数
CStdioFile::Open(LPCTSTR lpszFileName,UINT nOpenFlags,CFileException* pError = NULL);
参数解释见构造函数。
当对象定义时未给出构造函数参数,则调用第一个构造函数,此时需要调用open函数打开文件。
CStdioFile::ReadString(LPTSTR lpsz, UINT nMax);
参数:
lpsz;//指定指向将接收文本字符串的用户提供的缓冲区的指针,以null字符终止;
nMax;//指定能接受的最大字符数限制,以null字符终止;
返回值:
如果文件有多行,则当文件没有读完时,返回TRUE,读到文件尾,返回FALSE。
说明:
读取一行文本到缓冲区,遇到“0x0D,0x0A”时停止读取,并且去掉硬回车
(1)如果nMax<= 字符数,读取(nMax-1)个字符 + 0x00
(2)如果nMax = 字符数 + 1,读取nMax个字符 + 0x00
(3)如果nMax>字符数,读取nMax个字符 + 0x0A + 0x00
CStdioFile::ReadString(CString &rString);(重载
参数:
rString;//CString类的字符串
返回值:
如果文件有多行,则当文件没有读完时,返回TRUE,读到文件尾,返回FALSE。
说明:
读取一行文本到rString中,遇到回车换行符停止读取,回车和换行符均不读到rString中,尾部添加”0x00”。
CStdioFile::WriteString( LPCTSTR lpsz );(不支持CString直接写入)
将一个缓冲区硬回车换行符对写入该文件,即“ ”被转化成“ ”写入到文件里。
CStdioFile::Seek( LONGLONG lOff, UINT nFrom );
重新定位以前打开的文件的指针。
参数:
Off;//移动指针的字节数。
nFrom;//指针移到模式。必须为下列值之一:
Note thatlOffmust be negative to seek into the existing file; positive values will seek past the end of the file.  返回值:
如果请求的位置是非法的,Seek将会从文件的开始返回新的字节偏移量。否则,返回值是未定义的,并引发CFileException对象。
程序例
CStdioFile file;
CString str;
file.Seek(0,CFile::end);
file.WriteString( str );
//关闭文件
file.Close();
比如:读文件的例子
CString strText = “”;
CString szLine = “”;
//打开文件
CStdioFile file;
//逐行读取字符串
while( file.ReadString( szLine ) )
{
strText += szLine;
}
MessageBox(strText);
//关闭文件
file.Close();
声明
此词条定义是不完整的,完善词条请参考MSDN定义。编辑中参考网络部分解释,如有侵权请立即联系。
使用
读取一行文本到缓冲区,遇到“0x0D,0x0A”时停止读取,并且去掉硬回车
(1)如果nMax<= 字符数,读取(nMax-1)个字符 + 0x00
(2)如果nMax = 字符数 + 1,读取nMax个字符 + 0x00
(3)如果nMax>字符数,读取nMax个字符 + 0x0A + 0x00
CStdioFile::ReadString(CString &rString);(重载
CStdioFile::WriteString( LPCTSTR lpsz );(不支持CString直接写入)
将一个缓冲区硬回车换行符对写入该文件,即“ ”被转化成“ ”写入到文件里。
CFile的派生类CStdioFile提供了对文件进行流式的操作功能。其中函数void CStdioFile::WriteString( LPCTSTR lpsz )写入一个字符串,需要给字符串lpsz的末尾加上换行标志” ”;函数bool CStdioFile::ReadString(CString &rString )从文件中读取一行,如果文件未读完返回true,否则返回false。
比如:写入文件的例子
//创建文件
CStdioFile file;
//写入文件
CString str;
file.Seek(0,CFile::end);
file.WriteString( str );
//关闭文件
file.Close();
比如:读文件的例子
CString strText = “”;
CString szLine = “”;
//打开文件
CStdioFile file;
//逐行读取字符串
while( file.ReadString( szLine ) )
{
strText += szLine;
}
MessageBox(strText);
//关闭文件
file.Close();
参考资料
最新修订时间:2024-11-25 13:07
目录
概述
定义
参考资料