放大啦资源网 http://www.fangdala.com
当前位置首页 > 百科资料> 正文

cstdiofile

2023-03-01 20:01:40 暂无评论 百科资料

C来自StdioFi致绿与le继承自CFile,它神策志可以建立一个CStdioFile 对象360百科,代表一个用运行时函数fopen 打开的C 运行时流式文件。

  • 外文名称 CStdioFile
  • 流式文件 被缓冲
  • 代表 运行时函数打开的C流式文件
  • 不支持 Duplicate,LockRange

定义

  表示c.运行时流文件标记为打开该运行时函数fopen。

  流式文件是被缓冲加载到内存中的,而且可以以文本方式(缺省)或二进制方式打开。文本方式提供对硬回车- 换行符对的特来自殊处理。当你将一个移半名吸比赵属支儿研换行符(0x0A)写入一个文本方式的CStdioFile 对象时,字节对(0x0D,0x0A)被发送给该文件。当你读一个文件时,字节对(360百科0x0D,0x0A永球否露案开)被翻译为一个换行符(0x0A)。

  CStdioFile 不支持Duplicate,LockRange,和UnlockRange 这几个CFile 函数。如果在CStdioFile 中调用了这几个函数,将会出现CNoSupported 异常。

  CStdioFile类默认的是按照Text模式操作文件,CFile 类默某边月流构委六认的是按照二进制模式操作文件。

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

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

构造函数

 氢到道林收三五认刻沉 CStdioFile();

  CStdioFile( CAtlTransactionMan究矛请头ager* pTM);

  粒重输特决CStdioFi在度既理技胡督变煤le( FILE* pOpenStream );//参数(pOpenStream)是c运行函数fopen调用后返回的文件指针。

  CStdioFile( LPCTSTR lpszFileName,UINT nOpenFlags );

  CStdioFile( L额市井石和未民事作PCTSTR lpszFile章种Name)//(lpszFileName)是被打开的文件(绝对地址或相对地址)

参数解释

  LPCTSTR lpszFileName,//被打开的文件的路径(绝对地址或相对地址);

  FILE* pOpenStream;//c运行函数fopen调用后返回的文件指针;

  UINT nOpenFlags; //指的是CFile类中所描弦端富只始述的打开文件的方式。可以按位指定多诉重它远鱼克让杂然单个选项通过使用或(|)运算符;

  CAtlTransactionManager* pTM;//为CAtlTransactionManager对象的指针。

成员函数

  CStdioFile::Open(LPCTSTR lpszFileName,UINT nOpenFlags,CFileException* pError = NULL);

  参数解释见构造函数。

  当对象来自定义时未给出构造函数参数,则调用第一个构造函数,此时需要调用open函数打开文件。

  CStdio360百科File::ReadString(LPTSTR lps乙压故乙助z, UINT nMax);

  参数:乃束户

  lpsz;//指定指影厚犁民向将接收文本字符串的用户提供的缓冲区的指针,以null字符终止;

  nMax;//指定能接键危受的最大字符数限制,以null字符终止;

  返回值:

  如果文件有多行,则当文件没有读完时,返回TRUE,读到文件尾,返回FALSE。

  说明:

  读取一行文本到缓冲区,遇到"0破项态节永x0D,0x0A"时停止读取,并且去掉硬回车"0x0D",保留换行符"0x0A",在字符串末尾添加"\0"(0x00)。nMax个字符里包含0x00这个字符。分析如下:

  1)如果nMax <= 字符数,读取(nMax-1)个字符 + 0x00

  2)如果nMax = 字符数 + 1,读取nMax夜抓严编另年之置个字符 + 0x00

  3)如果nMax > 字符数,读取nMax个字符 + 0x0A + 0x00

  CStdioFile::ReadString(CS贵划甚tring &rString);(重载)

  参数:

  rString;//CString类的字符串

  返回值:

  如果文件有多行,则当黑殖在陆状余立硫吸略花文件没有读完时,返回TRUE,读到文件尾,返回FALSE。

  说明:

  读取一行文本到rString中,遇方贵卫士自米家普到回车换行符停止读取,回车和换行符均不读到rString中,尾部添加"台键她0x00"。

  CStdioFile::WriteString( LPCTSTR lpsz );(不支持CString直接写入)

  将一个缓冲区中的数据写入与CS下步夜副记害室激贵指tdioFile 对象关联的文件中宙捉巴嚷。结束的空字符("\0")不象模四超方措被写入该文件。lpsz 中的所有换肯签赠行符都被以一个硬回车换行符对写入该文件,即"\n"被转化成"\r\n"写入到文件里。

  CStdioFile::Seek( LONGLONG lOff, UINT nFrom );

  重新定位以前打开的文件的指针。

  参数:

  Off;//移动指针的字节数。

  nFrom;//指针移到模式。必须为下列值之一:

  CFile::begin:从文件开始将文件指针 移动lOff字节。

  CFile::current:从当前位置将文件指针移动lOff字节。

  CFi线经功比八林le::end:从文件的结尾将文件指针移动种律持住后lOff

  Note thatlOffmust be ne的态族异周坐gative to se马式势ek into the existing file; positive values will seek past the end of the file. 返回值:

  如果请求的位置是非法的,Seek将会从文件的开始返回新的字节偏移量。否则,返回值是未定义的,并引发CFileException对象。

程序例

  CStdioFile file;

  file.Open("ts.txt",CFile::modeCreate|CFile::modeWrite);//写入文件

  CString str;

  str.Format("%s\r\n","hello!I am talkingmute!");(在末尾添加\r\n会导致写出来的文档修改后出现格式错乱,只能写\n)

  file.Seek(0,CFile::end);

  file.WriteString( str );

  //关闭文件

  file.Close();

  比如:读文件的例子

  CString strText = "";

  CString szLine = "";

  //打开文件

  CStdioFile file;

  file.Open("ts.txt",CFile::modeRead);

  //逐行读取字符串

  while( file.ReadString( szLine ) )

  {

  strText += szLine;

  }

  MessageBox(strText);

  //关闭文件

  file.Close();

声明

  此词条定义是不完整的,完善词条请参考MSDN定义。编辑中参考网络部分解释,如有侵权请立即联系。

使用

  读取一行文本到缓冲区,遇到"0x0D,0x0A"时停止读取,并且去掉硬回车"0x0D",保留换行符"0x0A",在字符串末尾添加"\0"(0x00)。nMax个字符里包含0x00这个字符。分析如下:

  1)如果nMax <= 字符数,读取(nMax-1)个字符 + 0x00

  2)如果nMax = 字符数 + 1,读取nMax个字符 + 0x00

  3)如果nMax > 字符数,读取nMax个字符 + 0x0A + 0x00

  CStdioFile::ReadString(CString &rString);(重载)

  读取一行文本到rString,遇到回车换行符停止读取。回车和换行符不读到rString,而且末尾也没有添加"\0"。

  CStdioFile::WriteString( LPCTSTR lpsz );(不支持CString直接写入)

  将一个缓冲区中的数据写入与CStdioFile 对象关联的文件中。结束的空字符("\0")不被写入该文件。lpsz 中的所有换行符都被以一个硬回车换行符对写入该文件,即"\n"被转化成"\r\n"写入到文件里。

  CFile的派生类CStdioFile提供了对文件进行流式的操作功能。其中函数void CStdioFile::WriteString( LPCTSTR lpsz )写入一个字符串,需要给字符串lpsz的末尾加上换行标志"\r\n";函数bool CStdioFile::ReadString(CString &rString )从文件中读取一行,如果文件未读完返回true,否则返回false。

  比如:写入文件的例子

  //创建文件

  CStdioFile file;

  file.Open("ts.txt",CFile::modeCreate|CFile::modeWrite);

  //写入文件

  CString str;

  str.Format("%s\r\n","hello!I am talkingmute!");(在末尾添加\r\n会导致写出来的文档修改后出现格式错乱,只能写\n)

  file.Seek(0,CFile::end);

  file.WriteString( str );

  //关闭文件

  file.Close();

  比如:读文件的例子

  CString strText = "";

  CString szLine = "";

  //打开文件

  CStdioFile file;

  file.Open("ts.txt",CFile::modeRead);

  //逐行读取字符串

  while( file.ReadString( szLine ) )

  {

  strText += szLine;

  }

  MessageBox(strText);

  //关闭文件

  file.Close();

猜你喜欢