C++文件流I/O操作:fstream类

一.简介

    所谓“文件”,一般是指存在外部介质上的数据的集合,一批数据是以文件的形式存放在外部介质(如磁盘、光盘和U盘)上的,操作系统以文件为单位对数据进行管理。对用户来说,常用的文件有两大类:程序文件、数据文件。在程序运行过程中,常常需要将一些数据输出到磁盘上存起来,以后需要时再从磁盘中输入到计算机内存,这种磁盘文件就是数据文件,fstream类操作对象就是这种数据文件。

    fstream类是C++编译系统提供的以数据文件为对象的输入输出操作的类库,亦称文件I/O类,fstream类是标准I/O类iostream的派生类。

二.入门

  步骤1:添加头文件 #include <fstream.h>

  步骤2:定义fstream类的对象

    格式:文件流类型   文件流对象名 

//定义输入文件流对象,只读
  ifstream      infile;               
//定义输出文件流对象,只写
  ofstream      outfile;
//定义输入/输出文件流对象,可读可写             
  fstream       iofile;

  步骤3:打开要操作的文件

    格式:文件流对象名.open( 文件对象, 打开方式 );

//打开当前工作空间下的名为FileName的文件,如txtfile.txt、wavfile.wav
  iofile.open( "FileName", 打开方式 );                
//打开绝对路径FilePath下的文件,如D:\\txtfile.txt。注:必须路径是双反斜杠
  iofile.open( "FilePath", 打开方式 ); 
//以输入方式打开文件,只读。前提是文件必须存在               
  iofile.open( 文件对象, ios::in ); 
//建立输出方式文件,只写。如存在此名字文件,则清除原有内容                  
  iofile.open( 文件对象, ios::out ); 
//以输入输出方式打开文件,可读可写                 
  iofile.open( 文件对象, ios::in | ios::out ); 
//以输出方式打开文件,只写,写入的数据添加到文件末尾       
  iofile.open( 文件对象, ios::out | ios::app ); 
//以二进制方式方式打开输出文件,默认为ASCII方式      
  iofile.open( 文件对象, ios::out | ios::binary );

  步骤4:设置文件读写指针位置

    格式:文件流对象.tellg/p();                                                 //获得文件指针当前位置

    格式:文件流对象.seekg/p( 绝对位置值 );                       //将文件指针移到指定位置

    格式:文件流对象.seekg/p( 位移量,参照位置值 );        //以参照位置为基础移动位移量

//将文件读/写指针移到距文件起始100字节绝对位置
  iofile.seekg/p( 100 );                              
//将文件读/写指针从当前位置向文件尾方向移50字节
  iofile.seekg/p(  50, ios::cur );                   
//将文件读/写指针从当前位置向文件头方向移50字节
  iofile.seekg/p( -50, ios::cur );                  
//将文件读/写指针从文件尾回移50字节
  iofile.seekg/p( -50, ios::end );

  步骤5:对文件进行读写操作

    格式:文件流对象名.get/put( 字节变量 );

    格式:文件流对象名.read/write( 数据地址, 数据长度 );

//从文件中读取1个字节给ch
  iofile.get( ch );                     
//将ch(单字节)值写入文件
  iofile.put( ch );
 
//从文件中读取100字节数据按序从Rbuf地址开始存
  iofile.read( (char*)&Rbuf, 100 );                     
//将Wbuf地址开始的100字节数据按序写入文件
  iofile.write( (char*)&Wbuf, 100 );

  步骤6:操作结束,关闭文件   

    格式:文件流对象名.close();

三.进阶

  暂无

四.备注

  【1】当以xxfile.eof()函数来判断文件读写是否到文件尾时,切莫操作溢出文件尾,否则再使用xxfile.seekg/p()函数调整文件指针便会出错。

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

痞子衡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值