本文转自:http://blog.csdn.net/fanghb_1984/article/details/7425705

本文介绍两种方法对文件进行读取和写入操作:1、采用fstream类;2、采用CStdioFile类。

CStdioFile继承自CFile,一个CStdioFile对象代表一个用运行时函数fopen 打开的C 运行时流式文件。

C++中的fstream类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O。stream类有两个重要的运算符:插入器(<<)和析取器(>>)。插入器(<<)即向流输出数据,析取器(>>)即从流中输入数据。在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。fstream类包括向“流”输出数据的ofstream类和从“流”中输出数据的ifstream类。

1、文件的写入

往文件中写入数据的操作较为简单,这里以fstream类中往文件写入数据为例,介绍VC++中对文件的写入方法。对于用CstdioFile类对文件进行写入操作可参看相关资料。下面给出采用fstream类对文件进行写入操作的代码:

#include <fstream.h>

ofstream of1;//创建对象

of1.open("数据记录.txt",ios::out,filebuf::openprot);//打开文件

int i;//定义一个整型变量

float f; //定义一个单精度浮点型变量

double d; //定义一个双精度浮点型变量

i=123;//赋值

f=3.478f; //赋值

d=859.653; //赋值

of1<<i<<’\t’<<f<<’\t’<<d;//写入数据

of1.close();//关闭文件

运行后打开“数据记录.txt”文件,内容见图1,变量i,f,d已写入文件中。

图1 打开后文件的内容

2、文件的读取

2.1 采用fstream类

采用fstream类中的析取器(>>)从第一节生成的文件“数据记录.txt”中读取数据,实现的代码如下:

ifstream if1; //创建对象

if1.open("数据记录.txt",ios::in,filebuf::openprot);//打开文件

int i; //定义一个整型变量

float f; //定义一个单精度浮点型变量

double d; //定义一个双精度浮点型变量

CString str; //定义一个Cstring类

while(!if1.eof())

{

if1>>i>>f>>d;//读取数据

str.Format("%d %f %lf",i,f,d);

MessageBox(str);

}

if1.close();//关闭文件

运行结果见图2。

图2 读取文件的结果

值得注意的是,ifstream类中的析取器(>>)只适用天数据与数据之间是空隔(’ ’)或制表符(’\t’)分隔的情况,对于其他的分隔符,如’,’, ’;’等,若仍按上述方式读取,则会发生错误。针对这个问题,本文介绍第二种数据读取的方法。

2.2 采用CStdioFile类

采用CStdioFile类从第一节生成的文件“数据记录.txt”中读取数据,实现的代码如下:

CString string,str;//定义两个Cstring类

int i; //定义一个整型变量

float f; //定义一个单精度浮点型变量

double d; //定义一个双精度浮点型变量

CStdioFile file("数据记录.txt",CFile::modeRead);//创建CstdioFile对象

while(file.ReadString(string))//读取出一行中的所有字符

{

string.Replace(',',' '); //将字符中的逗号’,’用空格’ ’替换掉

string.Replace(';',' ');//将字符中的分号’;’用空格’ ’替换掉

sscanf(string,"%d%f%lf",&i,&f,&d);//提取数据

str.Format("%d %f %lf",i,f,d);

MessageBox(str);

}

file.Close();//关闭文件

程序运行的结果同图2。

  代码段string.Replace(',',' ')及string.Replace(';',' ')将读取的字符串中的逗号’,’及分号’;’用空格’ ’替换掉,从而为后面提取数据打下基础。因此采用CStdioFile类从文件中读取数据比采用fstream类更为灵活。

[转]VC++中对文件的写入和读取相关推荐

  1. VC++中对文件的写入和读取

    VC++中对文件的写入和读取 本文介绍两种方法对文件进行读取和写入操作:1.采用fstream类:2.采用CStdioFile类. CStdioFile继承自CFile,一个CStdioFile对象代 ...

  2. c#中文件的写入与读取

    在我们做名片管理时用到了对于名片的存储与读入问题.首先我们需要获取当前的路径引用using System.IO;命名空间.我们在写入之前先把card类型的一条记录转化成string类型的数组方便写入. ...

  3. VC中海量文件读写类设计与应用(转)

    VC中海量文件读写类设计与应用   沈瑞冰 摘要 本文阐述了海量文件读写的一般方法,并分析了该方法中存在的内存耗尽问题和解决办法,并就此设计了一个海量文件读写类,封装了海量文件读写操作,最后给出了一个 ...

  4. 剖析VC中的文件操作

    剖析VC中的文件操作 2002-8-4 17:33:29   燕山大学   聂栋栋   阅读次数: 18539 各种关于文件的操作在程序设计中十分常见,如果能对这些操作都了如指掌,就可以根据实际情况找 ...

  5. VC中海量文件读写类设计与应用

    VC中海量文件读写类设计与应用 文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile().WriteFile ...

  6. 解决python中csv文件中文写入问题

    解决python中csv文件中文写入问题 参考文章: (1)解决python中csv文件中文写入问题 (2)https://www.cnblogs.com/harrymore/p/10063775.h ...

  7. 用c语言对文件的写入和保存,C++_C语言中对文件最基本的读取和写入函数,C语言read()函数:读文件函数( - phpStudy...

    C语言中对文件最基本的读取和写入函数 C语言read()函数:读文件函数(由已打开的文件读取数据)头文件: #include 定义函数: ssize_t read(int fd, void * buf ...

  8. docker中遇到文件无法写入宿主文件问题(Permission denied)

    docker中遇到文件无法写入宿主文件问题(Permission denied) 一.compose-docker 启动项目 使用compose-docker up -d 启动项目出现相对应的服务没有 ...

  9. c语言把一个字符从指定文件中读取的函数,C语言中对文件最基本的读取和写入函数...

    C语言中对文件最基本的读取和写入函数 C语言read()函数:读文件函数(由已打开的文件读取数据)头文件: #include 定义函数: ssize_t read(int fd, void * buf ...

最新文章

  1. 使用Typescript的巧妙React上下文技巧-不是Redux
  2. 开发日记-20190719 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 12
  3. 电子工程师需要了解的SMT贴片质量问题汇总(转)
  4. 关于MySQL的慢日志分析工具
  5. 机器学习——常用算法的总结
  6. SpringBoot踩坑记录 Invalid bound statement (not found)引发的一些列问题
  7. 最优布线问题(信息学奥赛一本通-T1349)
  8. java重写的代码_java tostring方法重写代码示例
  9. 计算机中的类型,计算机中各种件文的类型及其作用.doc
  10. Qt_数据库基本操作(未完成)
  11. ajax提交手机号到php,ajax怎样申请手机号到数据库验证并且返回数据的状态值
  12. 使用 python 管理 mysql 开发工具箱 - 2
  13. 【例】系统顺序图、操作契约、领域模型图
  14. lammps教程:晶体建模之Atomsk方法(1)
  15. 使用vue+HBulider云游戏接口开发单击斗地主网页版
  16. 如何在校外下载期刊全文
  17. c语言实验输出姓名和学号,学号姓名第n次实验报告
  18. 早秋山居 --温庭筠[唐.五言律诗]
  19. 【360补天计划】记第一次漏洞提交
  20. 微信小程序-登录(wx.login)

热门文章

  1. error: index-pack died of signal fatal: index-pack failed【Git】
  2. 《CCNA安全640-554认证考试指南》——6.4节复习所有考试要点
  3. 允许MySQL 帐号远程登录
  4. java开发_数字转换汉语中人民币的大写_完整版
  5. Exchange 2010迁移Exchange 2013(一)共存部署
  6. 每一個故事兜發生在狠乆以前
  7. Raspberry Pi 4B 开机自动运行Python文件
  8. SciTE 2.21 汉化版
  9. 基于Python——实现远程下载sftp文件(只下载.zip文件)
  10. 复习一个知识点——原、反、补码以及取反操作