资源描述:
《C++面向对象程序设计 教学课件 作者 陈维兴 陈昕 C++邮电-9.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9章C++的输入和输出9.1C++流的概述9.2预定义类型输入输出的格式控制9.3文件的输入输出本章主要内容引言C++为何建立自己的输入输出系统(1)因为C++的输入输出系统比C语言更安全、更可靠。例如:在C语言中,常常会出现下面的错误:inti;//假定int型占两个字节,doublef//假定float型占四个字节scanf("%d",&i);//正确,输入一个整数,赋给整型变量iscanf("%d",i);//错误,漏写&printf("%d",i);//正确,输出整型变量i的值printf("%d",f);//错误,输出f变量中前两个字节的内容C++
2、的编译系统加强了对数据类型的检查,认为这两条语句是错误的。因此,用C++的输入输出系统进行操作是类型安全的。C的类型检查机制相对较弱,认为以上语句是合法的。(2)在C++中需要定义众多的用户自定义类型(如结构体、类等),但是使用C语言中的printf和scanf是无法对这些数据进行输入输出操作的。请看下面的例子:classMy_class{public:inti;floatf;char*str;};...my_classobj;printf("%my_class",obj);在C语言中,无法对My_class类对象的值进行输入输出操作C++的类机制允许它建立一
3、个可扩展的输入输出系统,不仅可以用来输入输出标准类型的数据,也可以用于用户自定义类型的数据。9.1C++流的概述9.1.1C++的流9.1.2预定义的流对象9.1.3输入输出流的成员函数本节主要内容9.1.1C++的流在C++中,“流”指的是数据从一个源流到一个目的的抽象,它负责在数据的生产者(源)和数据的消费者(目的)之间建立联系,并管理数据的流动。从流中提取数据称为输入操作,在输入操作中,字节流从输入设备(例如键盘、磁盘、网络连接等)流向内存;向流中添加数据称为输出操作,在输出操作中,字节流从内存流向输出设备(例如显示器、打印机、网络连接等)。C++编译系
4、统带有一个I/O流类库。在I/O流类库中包含许多用于输入输出的类,称为流类。用流类定义的对象称为流对象。1.用于输入输出的头文件C++用于输入输出的常用头文件有:﹡iostream包含了对输入输出流进行操作所需的基本信息。使用cin、cout等流对象进行针对标准设备的I/O操作时,须包含此头文件。﹡fstream用于用户管理文件的I/O操作。使用文件流对象进行针对磁盘文件的操作,须包含此头文件。﹡strstream用于字符串流的I/O操作。使用字符串流对象进行针对内存字符串空间的I/O操作,须包含此头文件。﹡iomanip用于输入输出的格式控制。在使用setw
5、、fixed等大多数操作符进行格式控制时,须包含此头文件。2.用于输入输出的流类I/O流类库中包含了许多用于输入输出操作的类,ios是抽象基类,输入流类istream和输出流类ostream是通过单继承从基类ios派生而来的,输入输出流类iostream是通过多继承从类istream和ostream派生而来的。2.用于输入输出的流类I/O流类库中包含了许多用于输入输出操作的类,ios是抽象基类,输入流类istream和输出流类ostream是通过单继承从基类ios派生而来的,输入输出流类iostream是通过多继承从类istream和ostream派生而来的。
6、iosistreamostreamiostream图9.1输入输出流类的继承层次结构9.1.2预定义的流对象用流类定义的对象称为流对象。与输入设备(如键盘)相联系的流(流对象)称为输入流(流对象);与输出设备(如屏幕)相联系的流(流对象)称为输出流(流对象);与输入输出设备(如磁盘)相联系的流(流对象)称为输入流出流(流对象)。C++中包含几个预定义的流(流对象),它们是:.标准输入流(流对象)cin.标准输出流(流对象)cout.非缓冲型的标准出错流(流对象)cerr.缓冲型的标准出错流(流对象)clog(1)cin----标准输入流对象,与标准输入设备相联
7、系(通常指键盘)。例如:cin>>变量名;“>>”为提取运算符(输入运算符),表示从键盘读取数据放入变量中。(2)cout---标准输出流(流对象),与标准输出设备相联系(通常指显示器)。例如:cout<<“数据”;“<<”为插入运算符(输出运算符),表示将“数据”写到显示器上。(3)cerr---非缓冲型的标准出错流对象,与标准输出设备相联系(通常指键盘)。(4)clog---缓冲型的标准出错流,与标准输出设备相联系(通常指显示器)。cerr与clog均用来输出出错信息。cerr和clog之间的区别是:cerr是不经过缓冲区,直接向显示器上输出有关信息,因而
8、发送给它的任何内容都立即输出;clog