[转]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类更为灵活。

时间: 2024-10-29 10:45:45

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

文件的写入,读取和关闭

我们今天要学的知识是关于文件的写入,读取和关闭.读取写入比较重要,关闭了解一下就好. 1.读取某一行:当我们需要读取某一行字符的时候,我们可以使用readline这个方法,我们也可以对readline进行赋值,这样可以规定最多多去多少个字符.比如lsf文件的某一行的前五个字符是hello,我们输入命令:lsf.readlinr(5),得到的结果就是hello,如果我们想要读取全部行的话,可以使用命令:readlines. 2.写入行:写入行在这里我们使用的方法是writelines,这个方法接受

JSP/Servlet Web应用中.properties文件的放置与读取

本地项目在本地类库中,我经常使用当前目录来放置.properties文件,这时调用方只要引用我的jar,并且将我的.properties放在他的classpath里面即可,比如:p.load(new FileInputStream("HanLP.properties"));这样类似下图的项目结构就可以跑起来:JSP/Servlet Web项目但是到了Web项目时,情况大不相同.在Tomcat下,classpath里只含apache-tomcat-8.0.14\bin目录下有限的...

【转】VC中对文件的读写

原文网址:http://www.cnblogs.com/LJWJL/archive/2012/10/06/2712466.html 注意: 1.由于C是缓冲写 所以要在关闭或刷新后才能看到文件内容 2.电脑处理文本型和二进制型的不同 (因为电脑只认识二进制格式) 方法一 :用C++的方法 // 写文件ofstream ofs("4.txt"); // 如果我们要用这个类 我们就需要先#include <fstream.h> ofs.write("hello&quo

VC中对文件的读写

http://www.cnblogs.com/LJWJL/archive/2012/10/06/2712466.html 注意: 1.由于C是缓冲写 所以要在关闭或刷新后才能看到文件内容 2.电脑处理文本型和二进制型的不同 (因为电脑只认识二进制格式) 方法一 :用C++的方法 // 写文件ofstream ofs("4.txt"); // 如果我们要用这个类 我们就需要先#include <fstream.h> ofs.write("hello",st

VC++中.DLL文件与.LIB文件关系

一般的LIB文件是"导入库",用来提供给link.exe,作为链接DLL--也就是"动态链接库"的依据.里面记录了类似下面的信息:调用函数xxx(),连接到x.dll的0xABCDEFGH地址:-- 早期的LIB,是"静态链接库",也是用来提供给link.exe,作为链接代码用的.里面的记录如下:调用xxx(),其代码是--:DLL的LIB(导入库),不含可执行的具体代码(代码在DLL中).而最早的LIB(静态链接库),里面含有代码.所以,可以看

IO流-文件的写入和读取

1.文件写入 类: FileWriter继承自Writer(字符流基类之一,另外一个为Reader) 方法: writer(参数); 根据参数可以写入字符.字符数组.字符数组中的一部分.整型.字符串.字符串中的一部分,抛IOException flush(); 刷新内存,把内存中的字符流写入文件 close(); 刷新内存并关闭字符输入流,抛出IOException import java.io.*; class Test { public static void main(String[] a

Java file文件的写入和读取

File文件的写入 一.FileWriter 和BufferedWriter 结合写入文件 FileWriter是字符流写入字符到文件.默认情况下,它会使用新的内容代替文件原有的所有内容,但是,当指定一个true值作为FileWriter构造函数的第二个参数,它会保留现有的内容,并追加新内容在文件的末尾. BufferedWriter:缓冲字符,是一个字符流类来处理字符数据.不同于字节流(数据转换成字节FileOutPutStream),可以直接写字符串.数组或字符数据保存到文件. 默认情况,替

python txt文件的写入和读取

1.文件的打开 使用open () 函数 打开文件.他有两个参数,文件路径或文件名和文件的打开方式. "r" 只读模式,不能编辑和删除文件内容. "w" 写入模式,会先将文件之前的内容清空,然后再写入. "a" 追加模式,会将数据添加的之前内容的后面. 如果不给打开方式,默认为只读模式. f=open("test.txt") #默认为只读模式 f=open("test.txt",'r') #只读模式 f=o

android .txt文件的写入,读取,还有复制图片

txt文件的写入: 1 private void save() { 2 FileOutputStream fos = null; 3 String state = Environment.getExternalStorageState();// sd状态 4 if (state.equals(Environment.MEDIA_MOUNTED)) {// 判断sd卡是否可用 5 File root = Environment.getExternalStorageDirectory(); 6 Fi