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” 。
 
 
  1. void CDemoDlg::OnReadFile()
  2. {
  3. CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST);
  4. pListBox->ResetContent();
  5.  
  6. //创建文件对话框
  7. CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY |
  8. OFN_OVERWRITEPROMPT, _T("文本文件(*.*)|*.*||"));
  9.  
  10. if (dlg.DoModal() == IDOK)
  11. {
  12. //获得文件路径
  13. CString strPathName = dlg.GetPathName();
  14.  
  15. CStdioFile file;
  16.  
  17. //打开文件
  18. if (!file.Open(strPathName, CFile::modeRead))
  19. {
  20. ::AfxMessageBox(_T("文件打开失败。"));
  21. return;
  22. }
  23.  
  24. //读文件
  25. CString strText = _T("");
  26. while (file.ReadString(strText))
  27. {
  28. pListBox->AddString(strText);
  29. }
  30.  
  31. //关闭文件
  32. file.Close();
  33. }
  34. }

c++ 按行读取txt文本的更多相关文章

  1. 参数化时按行读取txt文件,如何去掉换行符"\n"

    参数化按行读取txt,每行默认自带了回车换行操作,导致脚本报错,故而按行读取时,需要去掉默认的'\n' #coding=utf-8 from selenium import webdriver imp ...

  2. java按行读取txt并按行写入

    IO流想必大家都很熟悉了,本次实现的需求是按行读取文件内容并且按行写入,代码如下: try { String encoding="utf-8"; //设定自己需要的字符编码集 Fi ...

  3. ajax读取txt文本时乱码的解决方案

    前言:第一次学习使用 ajax 就是用来读取文本 先给出现乱码的代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/ ...

  4. MFC-按行读取TXT数据

    TXT中数据格式如下: 1 23 4 0 4 10 …… 要实现的功能是:定义一个函数,每次调用时从TXT文档中读一个整数 ,赋值给变量.同时,文件位置向下移动一行,以便下次调用时读取下一行的数据. ...

  5. Python中将变量按行写入txt文本中

    案例一: 讲数组a 循环写入名称为2.txt的文档中 # -*-coding:utf8-*- import requests from lxml import etree a=[1,2,3,4,5,6 ...

  6. 重定向管道流读取TXT文本第一次读取为""空字符串、type xxx.txt | go run . 报错、BOM头、[239,186,191] 字节数组

    重定向管道流读取TXT文本第一次读取为""空字符串.type xxx.txt | go run . 报错.BOM头.[239 186 191] 字节数组

  7. C++ 读取txt文本内容,并将结果保存到新文本

    循序渐进学习读文件 // readFile.cpp : 定义控制台应用程序的入口点. #include "stdafx.h" #include <iostream> # ...

  8. C# 读取txt文本内容写入到excel

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. matlab读取txt文本

    textread函数 原文:http://blog.sina.com.cn/s/blog_618af1950100k926.html 文档:https://ww2.mathworks.cn/help/ ...

随机推荐

  1. 【ASP.NET Web API教程】2.1 创建支持CRUD操作的Web API

    原文 [ASP.NET Web API教程]2.1 创建支持CRUD操作的Web API 2.1 Creating a Web API that Supports CRUD Operations2.1 ...

  2. Usaco 1.3.2 修理牛棚(Barn Repair)

      Barn Repair 题意:在一个夜黑风高,下着暴风雨的夜晚,农民约翰的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假,所以牛棚没有住满. 剩下的牛一个紧挨着另一个被排成一行来过夜. 有些牛棚里有 ...

  3. DM8168硬件平台

    DM8168硬件平台  作者:Marvin_wu TMS320DM8168是一款多核SoC,它集成了包含ARM Cortex A8.DSP C674X+.M3 VIDEO.M3 VPSS等处理器.DS ...

  4. 【deep learning学习笔记】注释yusugomori的LR代码 --- LogisticRegression.cpp

    模型实现代码,关键是train函数和predict函数,都很容易. #include <iostream> #include <string> #include <mat ...

  5. 陈年查尔斯们,请考虑下记者们的感受 by 李斌

    http://mp.weixin.qq.com/mp/appmsg/show?__biz=MjM5ODUxNTQwMA==&appmsgid=10000507&itemidx=2&am ...

  6. 向大家推荐个android的游戏引擎——cocos2d-x

    最近发现单单用android自带的功能函数来编写游戏,往往有很大的局限性,即耗时长,调试繁琐,没有一定的框架.所以博主发现了游戏引擎这个好东西,游戏引擎所拥有的架构和功能函数,使得游戏的编写更加得心应 ...

  7. c++/c/java 资源共享群

    Hi,我邀请你加入360云盘文件共享群:c++&c&java, 打开邀请链接:http://qun.yunpan.360.cn/10005202 , 输入邀请码:1357

  8. android apk反编译

    ★反编译所需工具 1.AXMLPrinter.jar 2.d2j-dex2jar.bat 3.查看Jar包的GUI工具 ★功能实现 ◇解压缩 apk文件其实就是一个MIME为zip的压缩包,可以用wi ...

  9. 此三层非彼三层——MVC&amp;UBD

    学习了三年编程了,到如今这个阶段,開始接触架构,開始认识架构,怎样设计一个程序的结构,学名称"架构模式"(architectural pattern).个人经历告诉我这在编程中是一 ...

  10. ThinkPHP使用分组详细介绍(十七)

    原文:ThinkPHP使用分组详细介绍(十七) 使用分组(模块分组) *就是将多个项目合并到一个项目/应用去(就是Home.Admin) ---分组不分组看自己的建立项目习惯,个人习惯用根目录配置生成 ...