分享
分销 收藏 举报 申诉 / 47

类型C--教程-从入门到精通-chap-08.ppt

  • 上传人:仙人****88
  • 文档编号:14760375
  • 上传时间:2026-11-14
  • 格式:PPT
  • 页数:47
  • 大小:555KB
  • 下载积分:10 金币
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    教程 入门 精通 chap 08
    资源描述:
    Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,第8章,I/O,系统和文件,流,格式化,I/O,文件流,流,流的概念,预定义的,C+,流,重载,I/O,运算符,流,流是一种生成或使用信息的抽象。,C+,的,I/O,系统把流连接到物理设备上,它的一个重要特点是不论它所连接的设备是什么,都采用相同的方式进行操作。,流有两种基本形式:文本流和二进制流。,文本流用于传递字符,二进制流用于传递所有数据类型的数据。,对流可以进行的最基本的操作是:打开和关闭。打开流可以让流连接到文件,而关闭操作可以让流断开与文件的连接,预定义的,C+,流,cin,标准输入流,cout,标准输出流,cerr,连接到标准输出的流,用于写入调试和错误信息,采用非缓冲的方式,clog,连接到标准输出的流,用于写入调试和错误信息,以缓冲的形式工作,重载,I/O,运算符,由于“”的作用是向流中插入,“”的作用是从流中提取,所以把重载这两个运算符的函数称为插入函数和提取函数。,插入函数的通式:,ostream,&operator(,istream,stream,类名&,obj,),/,需要输入数据的相关代码,return stream;,创建一个插入函数,定义一个是友元函数的插入函数,定义提取函数,格式化,I/O,使用,ios,成员函数进行格式化输入输出,使用操控符实现格式化输入输出,使用,ios,成员函数进行格式化输入输出,所有的流都有一套与它相关的格式标识,这些标识用于格式化流中的数据。,类,ios,就定义了一个,fmtflags,数据成员,这个数据成员以枚举的方式定义了很多的常量来表示输出的格式。,fmtflags,掩码枚举中定义的格式标识,ios,中定义的常用成员函数,简单使用,ios,进行格式化输出,取消与测试输出格式的设置,使用,width,precision,和,fill,进行格式设置,使用操控符实现格式化输入输出,操控符就是一系列的函数,这些函数可以包含在,I/O,表达式中更改流的格式参数,使用操控符,用户自定义操控符,与,C+,预定义的操控符一样,可以定义输入用的操控符,也可以定义输出用的操控符。,定义输出操控符的方法如下:,ostream,&,操控符名(,ostream,&stream),用户代码;,return stream;,定义输入操控符的方法如下:,istream,&,操控符名(,istream,&stream),用户代码;,return stream;,建立一个输出操控符,set,和一个输入操控符,prompt,文件流,打开和关闭文件,读写文本文件,读写二进制文件,其他,I/O,函数,文 件 流,为了不同的目的,可以使用3种流:文件输入流、文件输出流和文件输入/输出流。,它们分别由类,ifstream,类,ofstream,和,fstream,定义,打开文件,在定义了流之后,就可以在流上执行,open,操作来实现文件的打开。,每种流都有这个成员函数,惟一的区别是参数的取值不同。,第一个参数是一个指向字符的指针,用于传入表示文件名的字符串;,第二个参数指定文件的打开模式,不同流的,open,成员函数的这一项取值互不相同。,open,函数原型如下:,void,ifstream,:open(const char*filename,ios,:,openmode,);,void,ofstream,:open(const char*filename,ios,:,openmode,);,void,fstream,:open(const char*filename,ios,:,openmode,);,文件打开模式的取值,关闭文件,在打开文件并对文件进行了相关的操作之后,必须对控制流执行关闭操作,就是执行相关流的,close,成员函数。,close,成员函数没有参数,也没有返回值。,读写文本文件,使用“”运算符,读写文本文件的例子,读写二进制文件,为了能够存储文本文件不能够存储的非格式化信息,就需要使用二进制文件。,创建二进制文件的方法,以,ios,:binary,模式创建文件,并采用这种方法对文件进行读取。,二进制文件不可以使用“”和“”进行输入输出,为了实现输入输出可以使用下面的两种方法:一是使用成员函数,put,和,get;,二是使用成员函数,read,和,write。,put,和,get,使用,put,和,get,可以实现对流中单个字符的输入和输出。,get,函数和,put,函数的函数原型是:,istream,&get(char&,ch,);,ostream,&put(char&,ch,);,其中,get,函数从,istream,中读取一个字符放置在,ch,中,并返回对流的引用。如果到达流的末尾,就会返回一个,false;,而,put(),函数将,ch,中保存的字符放到,ostream,流中,并返回对流的引用,编写一个程序读取任何文件的内容,使用,put(),函数将字符串写入文件,read,和,write,使用,get,和,put,只能对文件读入和输出单个字符,而使用,read,和,write,则可以读入和输出一块字符。,read,和,write,也是流类的成员函数。,原型,istream,&read(char*,buf,streamsize,num);,ostream,&write(const char*,buf,streamsize,num);,其中:,read,的作用是从相关流中读取,num,所指定的字节数的数据,并将它们放到,buf,所指定的缓冲区中;,wirte,的作用是从,buf,所指定的缓冲区中将,num,个字节的数据输出到相关流中;,streamsize,是使用,typedef,定义的整数类型。,使用,wirte,成员函数向文件中写入数据,使用,read,成员函数读取文件中的数据,重载的,get,函数,最常用的几个重载函数原型如下:,istream,&get(char*,buf,streamsize,num);,istream,&get(char*,buf,streamsize,num,char,delim,);,int,get();,第一种形式的,get,函数的作用是读取,num-1,个字符到,buf,所指定的缓冲区中。,第二种形式的,get,函数的作用是读取,num-1,个字符到,buf,所指定的缓冲区中。,第三种形式的,get,函数的作用是从流中读取一个字符,把它作为返回值。如果到达文件尾就返回一个文件结束标识,EOF。,使用重载的,get(),函数,getline,函数,istream,&,getline,(char*,buf,streamsize,num);,istream,&,getline,(char*,buf,streamsize,num,char,delim,);,第一种形式的,getline,函数的作用是读取,num-1,个字符到,buf,所指定的缓冲区中。,第二种形式的,getline,函数的作用是读取,num-1,个字符到,buf,所指定的缓冲区中。,eof,函数,eof,函数专门用于检测是否已经到达文件尾,原型,bool eof,();,如果没有到达文件末尾,则返回,false,,否则返回,true。,peek,和,putback,函数,peek,的作用是从流中获取下一个字符,但是不提取出来。如果下一个字符是文件结束标识,EOF,,那么会返回这个标识。,原型:,int,peek();,putback,则可以把已经提取出的字符再放回到流中。这个函数带一个,char,类型的参数,用于把这个字符放到指定的流中。,原型,istream,&,putback,(char c);,flush,函数,C+,允许调用,flush,函数将没有写满的缓冲区内容写到物理设备上,原型,ostream,随机存取,为了实现随机存取,,C+,中为一个文件定义了两个指针,一个是获取指针,它指示下一次在文件的哪一个位置上发生输入操作;,一个是放置指针,它指示下一次在文件的哪一个位置上发生输出操作。,seekg,和,seekp,函数,seekg,和,seekp,可以操作两个指针来实现随机存取。,seekg,函数的作用是将文件当前的获取指针从指定的某一点开始移动某个偏移量字节数;,seekp,函数的作用是将文件的放置指针从指定的某一个点开始移动某个偏移量字节数。,原型:,istream,&,seekg,(off_type offset,seekdir orignal,);,ostream,&,seekp,(off_type offset,seekdir orignal,);,其中:,off_type,是,ios,用,typedef,定义的一种整数类型;而,seekdir,则是一个枚举类型,seekdir,类型的取值,实现随机向文件写入,从任意位置开始显示文件内容,rdstate,函数,原型:,iostate rdstate,();,iostate,是用于定义当前状态的枚举,4个函数,bool,bad();,bool eof,();,bool,fail();,bool,good();,如果操作正确,那么函数,good,的返回值是,true,,否则为,false;,如果发生了致命的错误,那么函数,bad,的返回值是,true,,否则为,false;,如果发生了非致命的错误,那么函数,fail,的返回值是,true,,否则为,false;,如果到达了文件尾,那么函数,eof,(),的返回值是,true,,否则为,false。,clear,函数,如果出现了错误,但是这个错误并不影响程序的继续执行,那么就需要清除错误标识。,原型:,void clear(,iostate,flags);,如果,flags,的值是,ios,:,goodbit,,,那么将清除所有的错误标识;如果是其他的设置,那么会清除相应的错误标识。,
    展开阅读全文

    开通VIP折扣优惠下载文档

    提示  咨信网声明:本文档由用户上传并分享,仅供学习交流、研究之用,未经授权,严禁复制、发行、汇编、翻译或网络传播等,侵权必究。

    咨信网小贴示:
    1、浏览或下载可查看了解,请点击【咨信网告知】。
    2、下载文件中如有侵权或不适当内容,将立即纠正。
    3、如果因为网速或其他原因下载失败请重新下载,重复下载[60天内]不扣币。
    4、开具发票登录电脑端申请,请点击【索取发票】。

    咨信网客服组:【微信客服】

    自信AI创作助手
    关于本文
    本文标题:C--教程-从入门到精通-chap-08.ppt
    链接地址:https://www.zixin.com.cn/doc/14760375.html

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork