第-13-章-输入输出流C--ppt课件.ppt
《第-13-章-输入输出流C--ppt课件.ppt》由会员分享,可在线阅读,更多相关《第-13-章-输入输出流C--ppt课件.ppt(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中基本概念基本概念 基本基本I/O流类流类 重载提取和插入运算符重载提取和插入运算符文件文件 教教 学学 内内 容容 C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中基基 本本 概概 念念 C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东
2、经济学院计算机科学与技术学院 徐振中输入输入/输出输出(I/O):程序与外设之间的数据交换。):程序与外设之间的数据交换。输入输入:程序从外设接收:程序从外设接收字节序列字节序列并转换为指定格式数据。并转换为指定格式数据。输出输出:程序将数据转换为:程序将数据转换为字节序列字节序列输出到外设。输出到外设。C/C+语言没有专门语言没有专门的的 I/O 语句。语句。C 语言的编译系统提供语言的编译系统提供 I/O 函数库,支持函数库,支持 I/O 操作。操作。C+语言的编译系统提供语言的编译系统提供 I/O 类库,支持类库,支持 I/O 操作。操作。C+语言程序设计语言程序设计 第十三章第十三章
3、输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中13.1 基本概念基本概念 13.1.1 字节流字节流 字节流字节流 数据的字节序列。数据的字节序列。字符流字符流(文本流)(文本流)二进制流二进制流 将字节流的每个字节按将字节流的每个字节按ASCII码字符解释。码字符解释。缺点缺点:在数据传输时需作转换,效率低。:在数据传输时需作转换,效率低。优点优点:因:因ASCII码是标准的,故字符流可直接编码是标准的,故字符流可直接编 辑、显示和打印,通行于各类计算机。辑、显示和打印,通行于各类计算机。源程序文件和文本文件都是。源程序文件和文本文件都是。将字节流的每个字节按二
4、进制数解释。将字节流的每个字节按二进制数解释。优点优点:在数据传输时不做转换,效率高。:在数据传输时不做转换,效率高。缺点缺点:因二进制数据在各类计算机中的存放格式:因二进制数据在各类计算机中的存放格式 有差异,故其可移植性差,且难以阅读。有差异,故其可移植性差,且难以阅读。C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中13.1 基本概念基本概念 13.1.2 文件文件 文件:文件:相关数据的字节序列集合。相关数据的字节序列集合。程序、数据、文档常以文件形式存于外存。程序、数据、文档常以文件形式存于外存。输入输入/输
5、出设备具有字节流特征,也是文件。输出设备具有字节流特征,也是文件。如:如:键盘是输入文件,显示器、打印机是输出文件。键盘是输入文件,显示器、打印机是输出文件。不同的文件所允许的操作可能不同。不同的文件所允许的操作可能不同。如:如:磁盘文件可写入磁盘文件可写入/取出;打印机文件只能写入。取出;打印机文件只能写入。文件名:文件名:为文件取的名字,以别于其它文件。为文件取的名字,以别于其它文件。程序可通过文件名来使用文件。程序可通过文件名来使用文件。文件名通常使用标识符。文件名通常使用标识符。C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与
6、技术学院 徐振中13.1 基本概念基本概念 13.1.3 缓冲缓冲 缓冲区缓冲区:系统在内存中开辟的、用来临时存放输入系统在内存中开辟的、用来临时存放输入/输出数输出数 据的区域。据的区域。缓冲区的作用:缓冲区的作用:提高提高CPU的使用效率。的使用效率。I/O 流分为缓冲流和非缓冲流。流分为缓冲流和非缓冲流。缓冲流:缓冲流:仅当缓冲区满或当前送入的数据为新的一行字仅当缓冲区满或当前送入的数据为新的一行字 符时,才做处理(称为刷新)。符时,才做处理(称为刷新)。较常用较常用。非缓冲流:非缓冲流:一旦数据送入缓冲区,立即处理。一旦数据送入缓冲区,立即处理。C+语言程序设计语言程序设计 第十三章第
7、十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中基本基本 I/O 流类流类 C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中13.2 基本基本I/O流类流类 C+的的 I/O 操作是以操作是以流流的形式实现的。在数据从一个对的形式实现的。在数据从一个对 象流动到另一个对象的过程中,无论是否对数据进行缓象流动到另一个对象的过程中,无论是否对数据进行缓 冲或对数据进行格式变换,这种流动都被抽象为冲或对数据进行格式变换,这种流动都被抽象为流流(程(程 序员与程序所访问的设备之间的一个统一的
8、接口,使程序员与程序所访问的设备之间的一个统一的接口,使程 序的输入输出设计尽可能地与具体设备无关)。序的输入输出设计尽可能地与具体设备无关)。C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中13.2 基本基本I/O流类流类 流在使用前要被建立,在使用后要被删除,使用特定的操流在使用前要被建立,在使用后要被删除,使用特定的操 作能从流中获取数据或向流中添加数据。从流中获取数据作能从流中获取数据或向流中添加数据。从流中获取数据 操作称为操作称为提取提取操作,向流中添加数据的操作称为操作,向流中添加数据的操作称为插入插入操
9、作。操作。C+系统提供了一个用于输入系统提供了一个用于输入/输出操作的类体系:输出操作的类体系:类体系提供了对预定义类型进行输入类体系提供了对预定义类型进行输入/输出操作的能力;输出操作的能力;程序员可利用这个类体系进行自定义类型的程序员可利用这个类体系进行自定义类型的I/O出操作。出操作。C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中类类 istream 和和 ostream 的公有派生类,的公有派生类,并未增加新成员,支持输入和输出操作。并未增加新成员,支持输入和输出操作。类类 ios 的公有派生类,的公有派生类
10、,提供输入操作。提供输入操作。类类 ios 的公有派生类,的公有派生类,提供输出操作。提供输出操作。虚基类虚基类提供流的格式化提供流的格式化I/O和出错处理,和出错处理,并通过指向类并通过指向类streambuf的对象的的对象的 指针成员来管理流缓冲区。指针成员来管理流缓冲区。提供对流的提供对流的 缓冲支持。缓冲支持。对文件进对文件进行提取和行提取和插入操作插入操作 对文件进对文件进行提取和行提取和插入操作插入操作 对文件进对文件进行提取和行提取和插入操作插入操作 对文件进对文件进行提取和行提取和插入操作插入操作 对文件进对文件进行提取和行提取和插入操作插入操作 从序列中从序列中取字符或取字符
11、或将字符放将字符放入序列中入序列中 13.2 基本基本I/O流类流类 公共基类公共基类 公共基类公共基类 C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中13.2 基本基本I/O流类流类 13.2.1 预定义的标准流对象预定义的标准流对象 预定义的标准流对象:预定义的标准流对象:cin、cout、cerr、clog。cin 为标准输入流对象,为标准输入流对象,用来处理标准输入即键盘输入用来处理标准输入即键盘输入。cout为标准输出流对象,为标准输出流对象,用来处理标准输出即屏幕输出用来处理标准输出即屏幕输出。cerr为
12、标准错误输出为标准错误输出流对象流对象,无缓冲。,无缓冲。clog为标准错误输出为标准错误输出流对象流对象,有缓冲。,有缓冲。例例:cout 是是 ostream 流类的对象,它在流类的对象,它在 iostream.h 头文件头文件 中作为全局对象定义:中作为全局对象定义:ostream cout(stdout);C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中#include using namespace std;void main()float a,b;cerr请输入请输入 a 和和 b 的值:的值:ab;if(
13、b)couta/b=a/bendl;else cerr除数为零!除数为零!endl;13.2 基本基本I/O流类流类 13.2.1 预定义的标准流对象预定义的标准流对象 friend ostream&operator(istream&,float)friend ostream&operator(ostream&,float)C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中13.2 基本基本I/O流类流类 13.2.2 I/O流的状态检测流的状态检测 检测检测I/O流操作状态的流操作状态的I/O流类的成员函数:流类的成员
14、函数:int rdstate():读取:读取I/O状态字。状态字。int bad():若非法操作,返回非零,否则返回:若非法操作,返回非零,否则返回 0。void clear(int=0):清除流中的错误。:清除流中的错误。int eof():到文件尾,返回非零,否则返回:到文件尾,返回非零,否则返回 0。int fail():I/O操作错,返回非零,否则返回操作错,返回非零,否则返回 0。int good():I/O操作正常,返回非零,否则返回操作正常,返回非零,否则返回 0。在在I/O操作后,应及时检测是否发生操作后,应及时检测是否发生I/O错误。在处理错误。在处理I/O 错误后,应使用错
15、误后,应使用 clear 函数清除流中的错误,以便进行后函数清除流中的错误,以便进行后 续续I/O操作。操作。C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中重载提取和插入运算符重载提取和插入运算符 C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中回顾回顾#include using namespace std;void main()float X,Y;cinXY;coutX,Yendl;coutABCDEFendl;1 21 2 1,2 1,
16、2 ABCDEF ABCDEF C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中13.3 重载提取和插入运算符重载提取和插入运算符#include using namespace std;class Point float X,Y;public:Point(float x=0,float y=0)X=x;Y=y;void main()Point p1,p2;coutp1p2endl;no operator defined which takes a right-hand operand of type class Po
17、int(or there is no acceptable conversion)C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中13.3 重载提取和插入运算符重载提取和插入运算符#include using namespace std;class Point float X,Y;public:Point(float x=0,float y=0)X=x;Y=y;ostream&operator(ostream&os,Point&p)osp.X;osp.Y;return os;void main()Point p1,p2
18、;coutp1p2endl;cannot access private member declared in class Point C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中13.3 重载提取和插入运算符重载提取和插入运算符#include using namespace std;class Point public:float X,Y;Point(float x=0,float y=0)X=x;Y=y;ostream&operator(ostream&os,Point&p)osp.X;osp.Y;return
19、 os;void main()Point p1,p2;coutp1p2endl;运行结果:运行结果:0000 C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中13.3 重载提取和插入运算符重载提取和插入运算符#include using namespace std;class Point float X,Y;public:Point(float x=0,float y=0)X=x;Y=y;ostream&operator(ostream&os,Point&p)osp.X;osp.Y;return os;void mai
20、n()Point p1,p2;coutp1p2endl;operator has too many parameters C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中13.3 重载提取和插入运算符重载提取和插入运算符#include using namespace std;class Point float X,Y;public:Point(float x=0,float y=0)X=x;Y=y;friend ostream&operator(ostream&os,Point&p)osp.X;osp.Y;retur
21、n os;void main()Point p1,p2;coutp1p2endl;运行结果:运行结果:0000 C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中13.3 重载提取和插入运算符重载提取和插入运算符 例例13.2:重载提取和插入运算符,直接输入:重载提取和插入运算符,直接输入/输出对象。输出对象。#include using namespace std;class Point float X,Y;public:Point(float x=0,float y=0)X=x;Y=y;friend istream&
22、operator(istream&,Point&);friend ostream&operator(ostream&,Point&);void main()Point p1,p2;coutp1p2;coutp1,p2(istream&is,Point&p)isp.Xp.Y;return is;ostream&operator(ostream&os,Point&p)ps(p.X,p.Y);return os;运行结果:运行结果:1 2 3 4 12,34 C+语言程序设计语言程序设计 第十三章第十三章 输入输入/输出流输出流 制作:制作:山东经济学院计算机科学与技术学院 徐振中标准流只能直接输入
23、标准流只能直接输入/输出基本类型的数据,自定义类型的数输出基本类型的数据,自定义类型的数 据只有转化成基本类型的数据后才可使用标准流。据只有转化成基本类型的数据后才可使用标准流。直接输入直接输入/输出类类型的数据,需重载输出类类型的数据,需重载“”运算符。运算符。重载提取运算符的格式:重载提取运算符的格式:friend istream&operator(istream&,ClassName&);重载插入运算符的格式:重载插入运算符的格式:friend ostream&operator”运算。运算。13.3 重载提取和插入运算符重载提取和插入运算符 C+语言程序设计语言程序设计 第十三章第十三章
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 13 输入输出 ppt 课件
限制150内