下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 第10章 输入输出流

第10章 输入输出流.ppt

第10章 输入输出流

亚静么
2011-09-29 0人阅读 举报 0 0 暂无简介

简介:本文档为《第10章 输入输出流ppt》,可适用于高等教育领域

第章输入输出流第章输入输出流课程要求课程要求.深入理解C的输入输出流的含义与其实现方法。.掌握标准输入输出流的应用包括格式输入输出。.掌握文本文件和二进制文件的读写方法。.掌握文件的随机存取方法。.掌握字符串流的应用。主要内容主要内容C的输入输出标准输入输出流文件操作与文件流字符串流C的输入输出C的输入输出C的输入输出是以流(字节序列)的形式进行的。C的输入输出主要有以下三种:()对系统指定的标准设备的输入输出即标准IO。()以外存磁盘文件为对象进行的输入输出称为文件的输入输出。()对内存指定的空间进行输入输出。C流的概念C流的概念.流与流类C的输入输出流是由若干字节组成的字节序列这些字节中的数据按一定的顺序从一个对象传送到另一个对象。C提供了一些供程序设计者使用的类在这些类中封装了可以实现输入输出操作的函数这些类统称为IO流类。流是用流类定义的对象如cin、cout.流的分类()文本流和二进制流:按照数据的格式()缓冲流与非缓冲流:按是否使用缓冲区C流类库C流类库C的流类库是用继承方法建立起来的输入输出类库由支持标准输入输出操作的基类和支持特定种类的源和目标的输入输出操作的类组成。它具有两个平行的基类所有其它的流类都是从它们直接或间接地派生出来的。streambuf类:提供对流缓冲区的低级操作ios类:提供对设备、文件的读写操作C流类体系.通用IO流类库()基类ios()输入类istream()输出类ostream()输入输出类iostream.文件IO流类库()ofstream类()ifstream类()fstream类.字符串IO流类库()ostrstream类()istrstream类()strstream类与iostream类库有关的头文件与iostream类库有关的头文件()iostreamh:包含对输入输出流进行操作的基本信息提供无格式支持的低级输入输出和有格式支持的高级输入输出操作功能。()fstreamh:包含管理文件输入输出操作的有关信息。()strstreah:包含对内存中数据进行输入输出操作的有关信息。()stdiostreamh:包含进行C风格的输入输出操作的有关信息。()iomaniph:包含输入输出流的格式控制符(manipulator)的有关信息。当一个程序中需要进行标准流输入输出操作时则必须包含头文件iostreamh当需要进行文件流输入输出操作时则必须包含头文件fstreamh当需要进行字符串流读写操作时则必须包含头文件strstreamh。插入与提取运算符的重载插入与提取运算符的重载“<<”和“>>”本来在C中被定义为左位移运算符和右位移运算符由于在文件iostreamh中对它们进行了重载使得它们能用作标准类型数据的输入输出运算符。从流中获取数据的操作称为提取操作使用提取运算符“>>”向流中添加数据的操作称为插入操作使用插入运算符“<<”。标准输入输出流标准流类标准输入输出流标准流类标准流是不需要打开和关闭文件即可直接操作的流式文件。cin:类istream的对象用来处理标准输入即键盘输入。cout:类ostream的对象用来处理标准输出即屏幕输出。cerr和clog:类ostream的对象与错误信息的标准输出设备(屏幕)相关联前者为非缓冲方式后者为缓冲方式。.标准输入流cin是由输入类istream的派生类istreamwithassign定义的对象在缺省的情况下cin所关联的外部设备为键盘实现从键盘上输入数据。cin为缓冲流。.标准输出流在C流类体系中定义的标准输出流是cout、cerr、clog是由输出类ostream的派生类ostreamwithassign定义的对象在缺省的情况下cout、cerr、clog所关联的外部设备为屏幕实现数据流输出到屏幕。cout、clog为缓冲流而cerr为非缓冲流。格式控制成员函数格式控制成员函数数据输出的格式控制可通过两种途径实现:使用预定义格式控制符带参数(如setw(n))的:在头文件iomaniph中定义不带参数(如dec)的:在头文件iostreamh中定义使用由ios类定义的格式控制成员函数:在头文件iostreamh中说明.输出宽度和填充字符输出宽度和填充字符可通过由ios类中定义的输出域宽控制成员函数width(n)和填充成员函数fill(c)实现。其中n为输出数据的宽度c为填充字符。【例】使用成员函数控制输出宽度及填充方式*****excpp*****#include<iostreamh>voidmain(){floata=coutfill('*')for(inti=i<i){coutwidth(i)cout<<a<<endl}}程序运行后输出:******.其它格式控制若要改变流的其它输出格式(如对齐方式)可使用ios类中定义的成员函数setf来实现函数格式如下:coutsetf(格式标志)格式标志在类ios中被定义为枚举值在引用这些格式标志时要在前面加上类名ios和域运算符“::”。【例】将学生姓名与比赛得分通过初始化赋给数组name、score指定姓名域宽为个字符、左对齐比赛得分为右对齐、用定点方式、小数点后有位有效数字。分析:浮点数默认的输出精度为(即输出位有效数字)例如浮点数显示为。若要实现指定小数点后显示几位有效数字应先用setf设置定点方式再用成员函数precision(n)设置小数点后n位有效数字。#include<iostreamh>#include<iomaniph>voidmain(void){char*name={"Zhou","Zhao","Liu","Chen","Li"}doublescore={,,,,}for(inti=i<i){coutsetf(ios::left)设置左对齐coutwidth()设置域宽为cout<<nameicoutunsetf(ios::left)coutsetf(ios::fixed)设置定点方式coutprecision()设置小数点后位有效数字cout<<scorei<<'n'}}程序运行后输出如下:ZhouZhaoLiuChenLi数据输入输出成员函数数据输入输出成员函数.数据输入成员函数()字符输入成员函数成员函数get()可以从输入流中获取字符并将它存放在指定的变量中。该函数有以下两种格式:ch=cinget()cinget(ch)函数实现从输入流中读取一个字符赋给字符变量ch。采用第种格式时如果读取数据成功则函数返回非值(真)否则(遇结束标志符)返回值(假)。【例】读取字符*****excpp*****#include<iostreamh>voidmain(void){charc,c,ccout<<"输入字符:"c=cinget()cinget(c)cinget()读入空白字符cinget(c)cout<<"c="<<c<<endlcout<<"c="<<c<<endlcout<<"c="<<c<<endl}输入字符:ab↙c↙c=ac=bc=c()字符串输入成员函数从输入流中一次读取一串字符有以下种方式:cinget(字符数组或字符指针字符个数n终止字符)cingetline(字符数组或字符指针字符个数n终止字符)从输入流中读取n-个字符赋给指定的字符数组(或字符指针指向的数组)。如果在读取n-个字符之前遇到指定的终止字符则提前结束读取。如果读取成功则函数返回非值(真)否则(遇文件结束符)返回值(假)。第三个参数缺省为换行符。【例】读取字符串*****excpp*****#include<iostreamh>voidmain(void){charstr,strcout<<"输入一行字符串:"cingetline(str,)cinget(str,)cout<<"str="<<str<<endlcout<<"str="<<str<<endl}程序运行结果如下:输入行字符串:Thisisabook↙Thisisabook↙str=Thisisabookstr=Thisisabook.数据输出成员函数()字符输出成员函数函数put()用于输出单个字符格式如下:coutput(charc)put函数的参数c可以是字符或字符的ASCII码例如:coutput('a')在屏幕上显示字符a()字符串输出成员函数函数write()用于输出一个指定长度的字符串格式如下:coutwrite(字符串字符个数n)例如:coutwrite("Thisisabookn",)文件操作与文件流文件操作与文件流文件的概念.文件文件(File)指存储于外部介质上的信息集合分为文本文件和二进制文件。文本文件以字节(byte)为单位每字节为一ASCII码代表一个字符故又称字符文件二进制文件又称为内部文件或字节文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。例如整数以文本形式(H)存储占用四个字节以二进制形式(H)存储则只占用两个字节。.文件的操作文件操作分成步:()定义文件流对象ifstream文件输入流对象ofstream文件输出流对象fstream文件输入出流对象()打开文件文件流对象open(磁盘文件名输入输出模式)也可以在定义文件流对象时指定文件打开模式在构造过程中打开该文件。定义方式如下:ifstream文件流对象(磁盘文件名输入输出模式)ofstream文件流对象(磁盘文件名输入输出模式)fstream文件流对象(磁盘文件名输入输出模式)()读写文件()关闭文件文件流对象close()文本文件的读写文本文件的读写.使用提取运算符或插入运算符对文件进行读写操作。【例】使用提取运算符和插入运算符将源文件中的前个字符复制到目标文件中。#include<fstreamh>voidmain(void){charfname,fnamecout<<"输入源文件名:"cin>>fnamecout<<"输入目的文件名:"cin>>fnameifstreaminfile(fname)定义文件输入流对象打开源文件if(!infile){cout<<"不能打开输入文件:"<<fname<<endlreturn}ofstreamoile(fname)定义文件输出流对象打开目标文件if(!oile){cout<<"不能打开目标文件:"<<fname<<endlreturn}charchintii=while(i<){infile>>ch从源文件中提取一个字符到变量ch中oile<<ch将ch中的字符写入目标文件中。i=i}infileclose()关闭源文件oileclose()关闭目标文件}.使用成员函数进行文件的读写操作【例】使用成员函数get与put将源文件的内容复制到目标文件中分析:先打开源文件和目标文件依次从源文件中读取一个字符并将所读字符写入目标文件中直到源文件中所有字符读完为止。#include<fstreamh>voidmain(void){charfname,fnamecout<<"输入源文件名:"cin>>fnamecout<<"输入目的文件名:"cin>>fnameifstreaminfile定义文件输入流对象infileopen(fname,ios::in|ios::nocreate)打开源文件if(!infile){cout<<"源文件不存在!"<<fname<<endlreturn}ofstreamoile定义文件输出流对象oileopen(fname,ios::out|ios::noreplace)打开目标文件if(!oile){cout<<"目标文件已存在不能新建目标文件!"<<fname<<endlreturn}charchwhile(infileget(ch))从源文件中提取一个字符到变量ch中oileput(ch)将ch中的字符写入目标文件中。infileclose()oileclose()}二进制文件的读写二进制文件的读写.二进制文件的写操作二进制文件的写操作是通过成员函数write()来实现:write(字符数组或字符指针,字节数).二进制文件的读操作二进制文件的读操作是通过成员函数read()来实现:read(字符数组或字符指针,字节数).测试文件结束测试二进制文件结束位置可用成员函数eof()实现当到达文件结束位置时该函数返回零值否则返回非零值。.返回读入数据的长度返回最近一次输入所读入的字节数可用成员函数gcount()实现。文件的随机读写文件的随机读写从文件中任何位置开始进行读或写数据这种读写方式称为文件的随机访问或直接存取。.文件定位C的类库fstream中定义了两个与文件相联系的指针读指针写指针C的文件定位分为读位置和写位置的定位对应的成员函数seekg():设置读位置Seekp:设置写位置()读操作定位相对文件头指针移动n个字节seekg(位移量n)相对参照位置指针移动n个字节seekg(位移量n,参照位置)参照位置可取三个值:①io::beg或:文件头。②io::cur或:文件指针当前的位置。③io::end或:文件尾。()写操作定位文件写操作的定位是通过成员函数seekp实现的。seekp(位移量n)seekp(位移量n,参照位置).其它成员函数()tellg()用于返回输入文件中文件指针的当前位置返回值为streampos类型。()tellp()用于返回输出文件中文件指针的当前位置返回值为streampos类型。()ignore(字符数n终止字符)用于略过n个字符。字符串流字符串流字符串流则是以内存中用户自定义的字符数组(字符串)为输入输出的对象因此字符串流又称为内存流。字符串流的概念字符串流对象关联的不是文件而是内存中的一个字符数组因此不需打开和关闭流对象。字符串流类包括istrstream、ostrstream和strstream。字符串流的输出操作字符串流的输出操作.字符串输出流的定义定义字符串输出流即建立存储所插入数据的数组对象的语句格式为:ostrstream字符串流对象(字符数组缓冲区大小n操作模式)strstream字符串流对象(字符数组缓冲区大小n操作模式).字符串输出流的操作()pcount()返回当前字符数组中已经插入的字符个数()str()返回存储在字符数组中的字符串。字符串流的输入操作字符串流的输入操作.字符串输入流的定义定义字符串输入流即初始化所创建的字符串输入流对象的语句格式为:istrstream字符串流对象(字符数组缓冲区大小n)strstream字符串流对象(字符数组缓冲区大小nios::in).字符串输入流的操作一个字符串输入流被定义后可以调用相应的成员函数进行数据的输入操作。

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/37

第10章 输入输出流

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利