[转]VC++中对文件的写入和读取
本文转自: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++中对文件的写入和读取的更多相关文章
- 在C#程序中,创建、写入、读取XML文件的方法
一.在C#程序中,创建.写入.读取XML文件的方法 1.创建和读取XML文件的方法,Values为需要写入的值 private void WriteXML(string Values) { //保存的 ...
- INI文件的写入与读取
INI文件的写入与读取 [节名] '[]中的节名对应此API的第一参数 Name=内容 'Nmae对应此API的第二参数 API的第三参数是没有取到匹配内容时返回的字符串; ...
- 装饰者模式的学习(c#) EF SaveChanges() 报错(转载) C# 四舍五入 保留两位小数(转载) DataGridView样式生成器使用说明 MSSQL如何将查询结果拼接成字符串 快递查询 C# 通过smtp直接发送邮件 C# 带参访问接口,WebClient方式 C# 发送手机短信 文件 日志 写入 与读取
装饰者模式的学习(c#) 案例转自https://www.cnblogs.com/stonefeng/p/5679638.html //主体基类 using System;using System.C ...
- java中常量文件的配置与读取
java中常量文件的配置与读取: package com.floor.shop.user.util; import java.io.InputStream; import java.io.InputS ...
- VC中对文件的读写
http://www.cnblogs.com/LJWJL/archive/2012/10/06/2712466.html 注意: 1.由于C是缓冲写 所以要在关闭或刷新后才能看到文件内容 2.电脑处理 ...
- 【转】VC中对文件的读写
原文网址:http://www.cnblogs.com/LJWJL/archive/2012/10/06/2712466.html 注意: 1.由于C是缓冲写 所以要在关闭或刷新后才能看到文件内容 2 ...
- Java file文件的写入和读取及下载
File文件的写入 一.FileWriter 和BufferedWriter 结合写入文件 FileWriter是字符流写入字符到文件.默认情况下,它会使用新的内容代替文件原有的所有内容,但是,当指定 ...
- java 文件操作 写入和读取(小结一)
参考了这篇博客并优化,谢谢:http://blog.sina.com.cn/s/blog_99201d890101b4le.html 功能: 实现通过两个类完成先写入文件,再读取数据计算显示 pac ...
- python txt文件的写入和读取
1.文件的打开 使用open () 函数 打开文件.他有两个参数,文件路径或文件名和文件的打开方式. "r" 只读模式,不能编辑和删除文件内容. "w" 写入模 ...
随机推荐
- gravity layout_gravity
gravity:控制当前视图的内容/子view layout_gravity:控制视图本身
- ADB运行框架原理解析【转】
本文转载自:http://blog.csdn.net/wlwl0071986/article/details/50935496 一.adb守护进程的初始化 源码路径:~/system/core/adb ...
- Linux内核中kzalloc函数详解
**************************************************************************************************** ...
- vue开发购物车,解决全选单选问题
实现全选单选,在vue中无法通过this获取input中的checkbox的checked属性,但是可以通过vue对input的特殊方式v-model来实现对应数据的绑定,同样也可以通过这种方式实现购 ...
- Lesson one of python
Test1:Use the powershell to output the contents print "Hello World!" print "Hello Aga ...
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
在做一个view背景特效的时候被坐标的各个获取方法搞晕了,几篇抄来抄去的博客也没弄很清楚. 现在把整个总结一下. 其实只要把下面这张图看明白就没问题了. 涉及到的方法一共有下面几个: view获取自身 ...
- hdu 3336 Count the string(next数组)
题意:统计前缀在串中出现的次数 思路:next数组,递推 #include<iostream> #include<stdio.h> #include<string.h&g ...
- apt-get update 问题 及gcc高亮
一 gcc高亮 gcc 高亮有好几种方法. 参考 http://www.cokco.cn/thread-39909-1-1.html 这个教程: (1) git clone https://githu ...
- RandomUtils
package com.cc.hkjc.util; import java.util.Random; public class RandomUtils { /** * 获取count个随 ...
- python中的异常处理try/except/finally/raise
异常发生在程序执行的过程中,如果python无法正常处理程序就会发生异常,导致整个程序终止执行,python中使用try/except语句可以捕获异常. try/except 异常的种类有很多,在不确 ...