欢迎来到天天文库
浏览记录
ID:50319998
大小:372.50 KB
页数:106页
时间:2020-03-08
《C及C++程序设计 第3版 教学课件 张富 第19章-C++的IO系统.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第19章C++的I/O系统C++的I/O系统概述19.1用户自定义插入操作符和提取操作符19.2格式化I/O19.3小结19.5文件的I/O19.419.1C++的I/O系统概述19.1.1C++的I/O流的基本概念流是C++为输入和输出提供的一组类,称为流库。流是与文件和外部设备相联系的。通过使用流定义的方法就能够完成对文件和设备的输入输出操作。C++的I/O流库是以类层次的方式实现的。它包含有两个平行的基类:streambuf和ios。所有的流类由它们派生。Streambuf类提供物理设备的接口,ios类提供用户使
2、用流类的接口。ios类派生出许多流类,使用者接触的是由派生类定义的高层次的I/O函数。基类ios直接派生出四个基本类:istream,ostream,fstreambase和strstreambase。在此基础上组合出多个实用流,如,iostream(输入输出流),fstream(输入输出文件流),strstream(输入输出串流)等。图19-1所示是与几个与输入输出操作有关的类及其继承结构关系。到目前为止我们一直使用cin和out实现输入和输出。它们是标准输入输出流。C++有四个预定义的标准流,当C++开始执行程序时
3、,它们会自动打开。这四个预定义流是:标准输入流cin;标准输出流cout;非缓冲型标准出错流cerr;缓冲型标准出错流clog。图19-1与I/O操作相关的几个主要类及其继承关系结构前两个流是与标准输入设备和标准输出设备相关的流,C++的标准输入输出设备默认(缺省)为键盘和显示器。但它们能由程序或操作系统重定向。缓冲型标准出错流clog与非缓冲型标准出错流cerr的区别在于,没有缓冲时,送给流的内容立即输出,而缓冲型的要等缓冲区满才输出,或强迫输出。C++提供的流I/O的一个明显优点,就是程序设计人员可以不考虑数据的类
4、型。为输出流重载的操作符“<<”,称为插入操作符(insector)。使用时,可以在输出流上插入字节。输入流重载的操作符“>>”,称为提取操作符(extractor)。使用时,可以在输入流上提取字节。这两个重载操作符分别定义在类ostream和istream中。操作系统提供一种I/O重定向技术,可以将与标准输入输出设备交换的信息改为与其他设备交换信息。常用的一种情况就是与磁盘文件交换信息。9.1.2输入/输出操作符的使用C++把数据传送操作的设备看作是对象在流类文件iostream中定义了流的对象cin和cout。ci
5、n代表输入设备,cout代表输出设备。前面各章中输入输出操作都是用cin和cout实现的。在前面提到的istream和ostream类中分别重载了右移位运算符“>>”和左移位运算符“<<”。前者称为提取操作符,后者称为插入操作符。使用插入操作符时,它的左操作数是代表输出设备的对象,右操作是输出的内容。把数据写到标准输出设备(显示器)的格式是:cout<<输出项;其中输出项可以是常量、变量、转义字符等。使用提取操作符时,它的左操作数代表输入设备的对象,右操作是内存缓冲区变量。从标准输入流对象cin(键盘)向变量送数据的格
6、式是:cin>>变量;输出运算符(插入操作符)允许多个输出操作结合在一个语句中,并且采用左结合方式。19.2用户自定义插入操作符和提取操作符19.2.1创建插入操作符“<<”写出如下的插入符函数的一般框架:ostream&operator<<(ostream&函数的流,用户定义类名对象名){函数代码return函数的流;}19.2.2重载提取操作符“>>”重载提取操作符“>>”的方法是和重载插入操作符“<<”一样的。其一般形式为:istream&operator>>(istream&函数的流,用户定义类名&对象名){函
7、数代码return函数的流;}同插入操作符函数一样,提取操作符函数也不能是所操作类的成员函数。它或者是友元函数或者是独立的函数。19.3格式化I/O19.3.1用ios类的成员函数实现格式化I/O在iostream.h文件中定义了如下的枚举类型:class{public://formatingflages格式标志enum{skipws=0x0001,//skipwhitespaceoninput(用于输入)left=0x0002,//left_adjustoutput(用于输出)right=0x0004,//right
8、_adjustoutput(用于输出)internal=0x0008,//padaftersignforbaseindicator(用于输出)dec=0x0010,//decimalconversion(用于输入/输出)oct=0x0020,//octalconversion(用于输入/输出)hex=0x0040,//hexade
此文档下载收益归作者所有