CStdioFile类的声明保存再afx.h头文件中。
CStdioFile类继承自CFile类,CStdioFile对象表示一个用运行时的函数fopen打开的c运行时的流式文件。流式文件是被缓冲的,而且可以以文本方式(默认)或者二进制方式打开。
CStdioFile类不支持CFile类中的Duplicate、LockRange、UnlockRange函数,如果你使用了,会得到CNotSupportedException类的错误。
CStringFile类默认的是按照Text模式操作文件。CFile 类默认的是按照二进制模式操作文件。
这里大致说明一下二进制模式和Text模式的区别。
二进制模式:对于一行的结尾我们必须输入”/r/n”,才能表示回车换行的效果。
Text模式:”/r”回车的工作是自动完成的,我们只需要写入”/n”即可。所以我们再使用文本模式时要主要,当我们从外部读入文件时,”/r/n”会被翻译成”/n”,写入文件时,我们对于回车换行只需提供”/n”,即可,”/r/n”会被写入到文件中。
m_pStream成员变量:
      打开文件的指针。
 
构造函数:
CStdioFile();
CStdioFile(FILE *pOpenStream);
CStdioFile(LPCTSTR lpFileName, UINT nOpenFlags);
throw(CFileException);
FILE *pOpenStream:指的是c运行函数fopen调用后返回的文件指针。
LPCTSTR lpFileName:指的是被打开的文件(绝对地址或相对地址)
UINT nOpenFlags:指的是CFile类中所描述的打开文件的方式。
 
virtual LPTSTR ReadString(LPTSTR lpsz, UINT nMax);
throw(CFileException);
如果使用该函数读取文本文件,当遇到”/r/n”,停止读取,并去掉”/r”,保留”/n”,并在字符串尾部增加”/0”,nMax的长度包含有”/0”字符,
实际的分析如下:
如果nMax <= 字符数,读取(nMax-1)个字符+0x00;
如果nMax = 字符数 + 1,读取nMax个字符+0x00;
如果nMax > 字符数,读取nMax个字符+0x0A(”/n”) + 0x00;
如果文件有多行,则当文件没有读完时,返回NOT NULL,读到文件尾,返回NULL。
 
BOOL ReadString(CString& rString);
throw(CFileException);
读取一行文本到rString中,遇到回车换行符停止读取,回车和换行符均不读到rString中,尾部也不添加”0x00”。
如果文件有多行,则当文件没有读完时,返回TRUE,读到文件尾,返回FALSE。
 
virtual void WriteString(LPTSTR lpsz);
throw(CFileException);
将缓冲区中的数据写入到与CStdioFile对象相关联的文件中,不支持CString类型数据写入,结束的”/0”不被写入到文件中,lpsz缓冲区中的所有换行符被替换为回车换行符即”/n”转换为”/r/n”。
 

CStdioFile的更多相关文章

  1. CStdioFile CString 读写中文

    TCHAR* old_locale = _tcsdup( _tsetlocale(LC_CTYPE,NULL) ); _tsetlocale( LC_CTYPE, _T("chs" ...

  2. MFC 文件按行读写 CStdioFile

    //写文件 CStdioFile file; file.Open("test.txt",CFile::modeCreate|CFile::modeReadWrite); file. ...

  3. 关于CStdioFile的使用问题

    在win32控制台调试如下程序 #include "stdafx.h"#include <afx.h>//#include <iostream>//usin ...

  4. CStdioFile 写文件

    前言: 介绍如何使用 CStdioFile 类去写文件. 完整工程代码,点我下载(请注意工程里面需要包含的 <locale.h>头文件 ) 示例: /// My Add // 获取当前路径 ...

  5. CFile、CStdioFile、FILE和其他文件操作(转+总结)

    CFile.CStdioFile.FILE和其他文件操作(转+总结) 2010-04-10 20:36:33|  分类: VC++|举报|字号 订阅     下载LOFTER我的照片书  |     ...

  6. 使用cstdiofile在vs2010中无法写入中文的问题

    在VC2010环境下, 以下代码无法实现使用CStdioFile向文本文件中写入中文(用notepad.exe查看不到写入的中文) CStdioFile file; file.Open(…); fil ...

  7. MFC CStdioFile

    读Text文件 void CNWiReworkDlg::ReadHexFile() { using namespace std; CStdioFile file; file.Open(hexFileP ...

  8. C++ writestring 为什么不能写进中文 CStdioFile向无法向文本中写入中文【二】

    本地化设置需要具备三个条件:a. 语言代码 (Language Code)b. 国家代码 (Country Code) c. 编码(Encoding)本地名字可以用下面这些部分来构造:语言代码_国家代 ...

  9. CStdioFile的Writestring无法写入中文的问题

    解决UNICODE字符集下CStdioFile的Writestring无法写入中文的问题 2009-12-01 23:11 以下代码文件以CStdioFile向无法向文本中写入中文(用notepad. ...

随机推荐

  1. 修改Android系统字号(二)

    /*********************************************************************** * 修改Android系统字号(二) * 说明: * ...

  2. 微软推出首个Microsoft Azure Stack技术预览版

    Mike Neil,微软公司企业云副总裁 怀着对于提高业务灵活性.加速创新的期待,很多企业正在向云平台迅速迁移.伴随着这样的趋势,我们也见证了微软智能云Azure业务在全球市场的快速增长--每个月近1 ...

  3. 学习opengl(起步)

    库可以在这里下载 第一个程序: #ifndef GLUT_DISABLE_ATEXIT_HACK #define GLUT_DISABLE_ATEXIT_HACK #endif #include &l ...

  4. 【JavaScript学习笔记】鼠标样式

    style="cursor:hand"   手形 style="cursor:crosshair"   十字形       style="cursor ...

  5. Mac下配置环境变量

    1.创建并以 TextEdit 的方式打开 ~/.bash_profile 文件,如果没有则 touch ~/.bash_profile; 然后打开 vim ~/.bash_profile 2.新增环 ...

  6. TCP握手

    1.TCP的三次握手四次挥手 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认. 第二 ...

  7. ORACLE执行计划 explain说明

    ORACLE SQL优化工具系列之--EXPLAIN PLAN 对于oracle数据库来说,sql语句的优化可能是对性能提升最为明显的,当然对于DBA来说,也是挑战性比较大的.为了优化一个复杂的SQL ...

  8. 定时组件quartz系列<一>模拟定时组件小程序

    一.核心概念 Quartz的原理不是很复杂,只要搞明白几个概念,然后知道如何去启动和关闭一个调度程序即可. 1.Job表示一个工作,要执行的具体内容.此接口中只有一个方法void execute(Jo ...

  9. 【模版消息】C#推送微信模版消息(Senparc.Weixin.MP.dll)

    定义的模版内容: {{first.DATA}} 商品名称:{{product.DATA}} 商品价格:{{price.DATA}} 购买时间:{{time.DATA}} {{remark.DATA}} ...

  10. 热门Web开发方式 REST实现原理浅析

    REST 首先只是一种架构样式,不是一种标准.这点和 Ajax 类似,两者都是利用现有的成熟技术.在 REST 的定义中,一个 Web 应用总是使用固定的 URI 向外部世界呈现(或者说暴露)一个资源 ...