欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《输入输出流库》PPT课件.ppt

    • 资源ID:5610390       资源大小:309.50KB        全文页数:23页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《输入输出流库》PPT课件.ppt

    3.5 输入输出流库3.5.1 概述3.5.2 流的格式控制和错误处理3.5.3 使用输入输出成员函数3.5.4 提取和插入运算符重载3.5.5 文件流概述3.5.6 顺序文件操作3.5.7 随机文件的操作,概述 输入输出操作是由“流”来处理的。数据从一个位置到另一个位置的流动抽象为“流”。数据从键盘流入到程序中时,这样的流称为“输入流”,数据从程序中流向屏幕或磁盘文件时,这样的流称为“输出流”。当流被建立后就可以使用一些特定的操作从流中获取数据可向流中添加数据。从流中获取数据的操作称为“提取”操作,向流中添加数据的操作称为“插入”操作。C+提供了四个预定义的标准流对象:cin、cout、cerr和clog。当在程序中包含了头文件“iostream.h”,编译器调用相应的构造函数,产生这四个标准流对象,在程序中就可以直接使用它们了。cin是istream类的对象,用处理标准输入,即键盘输入。cout是ostream类的对象,用处理标准输出,即屏幕输出。cerr和clog都是ostream类的对象,用来处理标准出错信息,并将信息显示在屏幕上。在这四个标准流对象中,除了cerr不支持缓冲外,其余三个都带有缓冲区。标准流通常用提取运算符“”和插入运算符“”来进行输入输出操作的,而且系统还会自动地完成数据类型的转换。由于前面已讨论过cin和cout的用法,对于cerr和clog也可同样使用,因此这里就不再重复了。,3.5输入输出流库,3.5输入输出流库,流的格式控制和错误处理 使用格式控制成员函数 在ios类中控制输入输出的成员函数有:int ios:width();/返回当前的宽度设置int ios:width(int);/设置宽度并返回上一次的设置int ios:precision();/返回当前的精度设置int ios:precision(int);/设置精度并返回上一次的设置char ios:fill();/返回当前空位填充的字符char ios:fill(char);/设置空位填充的字符并返回上一次的设置long ios:setf(long);/设置状态标志并返回上一次的状态标志long ios:unsetf(long);/消除状态标志并返回上一次的状态标志long ios:flags();/返回当前的状态标志long ios:flags(long);/设置状态标志并返回上一次的状态标志,3.5输入输出流库,例Ex_FormatFunc 使用格式控制成员函数。#include using namespace std;void main()int nNum=12345;double dNum=12345.6789;char*str=This,is,a Test!;cout.setf(ios:oct|ios:showbase|ios:showpos);coutnNumtdNumendl;cout.setf(ios:hex|ios:scientific|ios:uppercase);coutnNumtdNumendl;cout.fill(*);/设置填充符号为*for(int i=0;i3;i+)cout.width(12);coutstri;coutendl;cout.setf(ios:left);/设置标志:左对齐for(i=0;i3;i+)cout.width(12);coutstri;coutendl;char a10;cin.getline(a,sizeof(a);,3.5输入输出流库,运行结果:,使用格式算子 格式算子是一个对象,可以直接被插入符或提取符操作。,3.5输入输出流库,例Ex_Formator 使用格式算子。#include#include using namespace std;void main()int nNum=12345;double dNum=12345.6789;char*str=This,is,a Test!;coutsetiosflags(ios:oct|ios:showbase|ios:showpos);coutnNumtdNumendl;coutsetiosflags(ios:hex|ios:scientific|ios:uppercase);coutnNumtdNumendl;coutsetfill(*);/设置填充符号为*for(int i=0;i3;i+)coutsetw(12)stri;coutendl;coutsetiosflags(ios:left);/设置标志:左对齐for(int i=0;i3;i+)coutsetw(12)stri;coutendl;char a10;cin.getline(a,sizeof(a);,3.5输入输出流库,运行结果:,流的错误处理 在输入输出过程中,一旦发现操作错误,流就会将发生的错误记录下来。可以使用提供的错误检测功能,检测和查明错误发生的原因和性质,然后调用clear()函数清除错误状态,使流能够恢复处理。在ios类中,定义了一个公有枚举成员io_state来记录各种错误的性质:enum io_state goodbit=0 x00,/正常eofbit=0 x01,/已达到文件尾failbit=0 x02,/操作失败badbit=0 x04/非法操作;在ios类中又定义了检测上述流状态的下列成员函数:int ios:rdstate();/返回当前的流状态int ios:bad();/如果badbit位被置位,返回非0voidios:clear(int);/清除错误状态int ios:eof();/返回非0表示提取操作已到文件尾int ios:fail();/如果failbit位被置位,返回非0int ios:good();/操作正常时,返回非0,3.5输入输出流库,例Ex_ManipError 检测流的错误。#include using namespace std;void main()int i,s;char buf80;couti;s=cin.rdstate();couti;s=cin.rdstate();char a10;cin.getline(a,sizeof(a);,3.5输入输出流库,运行结果:,使用输入输出成员函数 输入操作的成员函数(1)使用get()和getline()函数用于输入字符或字符串的成员函数get()原型如下:int get();istream它是用来从输入流中提取一个输入行,并把提取的字符串由pch返回,nCount和delim的含义同上。用get()函数提取字符串时,由于遇到换行符就会结束提取,此时换行符仍保留在缓冲区中,当下次提取字符串时就不会正常,而getline()在提取字符串时,换行符也会被提取,但不保存它。因此,当提取一行字符串时,最好能使用函数getline()。,3.5输入输出流库,(2)使用read()函数 read()函数可以读取字符或字符串,可以读取字节流。原型:istream,3.5输入输出流库,运行结果:,输出操作的成员函数 ostream类中用于输出单个字符或字节的成员函数是put()和write(),它们的原型如下:ostream,3.5输入输出流库,提取和插入运算符重载 C+中的一个最引人注目的特性是允许用户重载“”和“using namespace std;class CStudent public:friend ostream,3.5输入输出流库,ostream,3.5输入输出流库,void main()CStudent one;cinone;coutone;char a10;cin.getline(a,sizeof(a);char data80;cin.read(data,8);,3.5输入输出流库,运行结果:,文件流概述 文件是保存在存储介质上一系列数据的集合。有两种含义,一种指一个外部设备。另一种指一个磁盘文件,存放在磁盘上的文件,每个文件都有一个文件名。将文件看作是由连续的字符的数据顺序组成的。根据文件中数据的组织方式,可分为文本文件和二进制文件。文本文件中每一个字节用以存放一个字符的ASCII码值,而二进制文件是将数据用二进制形式存放在文件中,它保持了数据在内存中存放的原有格式。无论是文本文件还是二进制文件,都需要用“文件指针”来操纵。一个文件指针总是和一个文件所关联的,文件打开时,文件指针指向文件的开始,随着对文件的处理,文件指针不断地在文件中移动,并一直指向最新处理的字符(字节)位置。文件处理有两种方式,一种称为文件的顺序处理,从文件的第一个字符(字节)开始顺序处理到文件的最后一个字符(字节),文件指针也相应地从文件的开始位置到文件的结尾。另一种称为文件的随机处理,在文件中通过C+相关的函数移动文件指针,并指向所要处理的字符(字节)位置。按照这两种处理方式,可将文件相应地称为顺序文件和随机文件。,3.5输入输出流库,C+提供了文件操作的文件流库,如图。ifstream类是从istream类公有派生而来,用来支持从输入文件中提取数据的各种操作。ofstream类是从ostream公有派生而来,用来实现把数据写入到文件中的各种操作。fstream类是从iostream类公有派生而来,提供从文件中提取数据或把数据写入到文件的各种操作。filebuf类从streambuf类派生而来,用来管理磁盘文件的缓冲区,应用程序中一般不涉及该类。,3.5输入输出流库,顺序文件操作 文件的打开和关闭 打开或创建一个指定的文件需要下列两个步骤:(1)声明一个ifstream、ofstream或fstream类对象。例如:ifstream infile;/声明一个输入(读)文件流对象ofstream outfile;/声明一个输出(写)文件流对象fstream iofile;/声明一个可读可写的文件流对象(2)使用文件流类的成员函数打开或创建一个指定的文件,使得该文件与声明的文件流对象联系起来,这样对流对象的操作也就是对文件的操作。例如:infile.open(“file1.txt”);outfile.open(“file2.txt”);iofile.open(file3.txt,ios:in|ios:out);上述这两步操作也可合为一步进行,即在声明对象时指定文件名。例如:ifstream infile(“file1.txt”);ofstream outfile(“file2.txt”);fstream iofile(file3.txt,ios:in|ios:out);,3.5输入输出流库,ifstream、ofstream或fstream的函数原型如下:ifstream(const char*szName,int nMode=ios:in,int nProt=filebuf:openprot);void ifstream:open(const char*szName,int nMode=ios:in,int nProt=filebuf:openprot);ofstream(const char*szName,int nMode=ios:out,int nProt=filebuf:openprot);void ofstream:open(const char*szName,int nMode=ios:out,int nProt=filebuf:openprot);fstream(const char*szName,int nMode,int nProt=filebuf:openprot);void fstream:;open(const char*szName,int nMode,int nProt=filebuf:openprot);szName用来指定要打开的文件名,mode指定文件的访问方式。prot用来指定文件的共享方式,默认时是filebuf:openprot,表示DOS兼容的方式。,3.5输入输出流库,3.5输入输出流库,文件的读写 例Ex_File 将文件内容保存在另一文件中,并将内容显示在屏幕上。#include#includeusing namespace std;void main()fstream file1;/定义一个fstream类的对象用于读file1.open(Ex_DataFile.txt,ios:in);if(!file1)coutEx_DataFile.txt不能打开!n;return;fstream file2;/定义一个fstream类的对象用于写file2.open(Ex_DataFileBak.txt,ios:out|ios:trunc);if(!file2)coutEx_DataFileBak.txt不能创建!n;file1.close();return;,3.5输入输出流库,char ch;while(!file1.eof()file1.read(,3.5输入输出流库,3.5.7 随机文件操作 提供在文件中来回移动文件指针和非顺序地读写文件的能力,能快速地检索、修改和删除文件中的信息。顺序文件和随机文件都是以顺序字符流的方式将信息写在磁盘等存储介质上,其区别仅在于文件的访问和更新的方法。以随机的方式访问文件时,文件中的信息在逻辑上组织成定长的记录格式。定长的记录格式是指文件中的数据被解释成同一种类型的信息的集合。这样就可以通过逻辑的方法,将文件指针直接移动到所读写的数据的起始位置,来读取数据或者将数据直接写到文件的这个位置上。以随机的方式读写文件时,必须首先打开文件。文件以读(in)或写(out)的模式打开时,文件指针指向文件的第一个字符(字节),而以追加的模式(app)打开后,文件指针指向文件的尾部。根据具体的读写操作提供seekg和seekp函数将文件指针移动到指定的位置。原型:istreampos指定文件指针的绝对位置。off指定文件指针的相对偏移时,文件指针的最后位置还依靠dir的值。dir值可以是:ios:beg 从文件流的头部开始ios:cur 从当前的文件指针位置开始ios:end 从文件流的尾部开始,3.5输入输出流库,

    注意事项

    本文(《输入输出流库》PPT课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开