EC+面向对象程序设计 计算机与信息学院 罗宪
C++面向对象程序设计 计算机与信息学院 罗宪
第七章C+的流库(流类库) 本章主要内容: >流库的层次结构(简单介绍) >输出流 >输入流 输入输出格式控制 >文件JO流
第七章 C++的流库(流类库) 本章主要内容: ➢流库的层次结构(简单介绍) ➢输出流 ➢输入流 ➢输入/输出格式控制 ➢文件I/O流
第一节流库的类层次结构 2流的概念 亠}流( strean):流操作,简称流 在计算机内存中,数据从内存的一个地址移动到另 、个地址称为数据流动流操作。 流操作是通过缓冲区( buffer)机制实现的 >缓冲区( buffer):内存的一块区域用作文件与内 存交换数据。 将数据从文件中读出: 文件→缓冲区内存 填满 >将数据写入文件: 内存缓冲区文件 填满
第一节 流库的类层次结构 一、流的概念 ➢流(stream):流操作,简称流 ➢在计算机内存中,数据从内存的一个地址移动到另一 个地址称为数据流动——流操作。 ➢流操作是通过缓冲区(buffer)机制实现的。 ➢缓冲区(buffer):内存的一块区域——用作文件与内 存交换数据。 ➢将数据从文件中读出: 文件 缓冲区 内存 填满 内存 缓冲区 文件 填满 ➢将数据写入文件:
第一节流库的类层次结构 在C++中,把输入设备(如键盘KB)、输出设备(如 显示器CRT)看成一种文件即输入输出设备均引 入缓冲区机制”称设备文件。 流操作: KB KB Buffer CRT CRT Buffer File File buffer >C+中输入输出操作通过调用标准流库实现: ★KB:标准输入流用标准输入流对象cin表示 ☆CRT:标准输出流用标准输出流对象cout表
第一节 流库的类层次结构 ➢在C++中,把输入设备(如键盘KB)、输出设备(如 显示器CRT)看成一种文件——即输入输出设备均引 入缓冲区机制——称设备文件。 ➢流操作: KB KB Buffer CRT CRT Buffer File File Buffer ➢C++中输入输出操作通过调用标准流库实现: KB:标准输入流——用标准输入流对象cin表示 CRT:标准输出流——用标准输出流对象cout表 示
第一节流库的类层次结构 二、流库的类层次结构 座科场排含新库点库(煮津遼与某确 h ()C+老标准流库的类层次结构 )者标准隆摩用承的方结建立来的输簿3 10类:输入输出的基类 ()直接派生 istream 输入流类 ostream 输出流类 Estreambase—文件流类 strstreambase 串流类
第一节 流库的类层次结构 二、流库的类层次结构 ➢Visual C++6.0包含两种流库:C++老标准流库(其流 库文件均带有.h)及新标准流库(其流库文件均不 带.h) ㈠ C++老标准流库的类层次结构 ➢C++老标准流库是用继承的方法建立起来的输入/输7.3、 出(I/O)类库(教材①P343图7.3、图7.4)。包括: ➢ios类:输入/输出的基类: ⑴ 直接派生: ➢istream —— 输入流类 ➢ostream —— 输出流类 ➢fstreambase —— 文件流类 ➢strstreambase —— 串流类
第一节流库的类层次结构 (2) iostream 、派生得到 输入输出流类—由 istream及 ostream y class 10s, class istream virtual public ios class ostream: virtual public ios class iostream public istream, public ostream (3)在 istream、 ostream、 iostream的基础上重载“ 派生出: class istrema withassign: public istream;(输入流辅 助类) > class ostrema_ withassign: public ostream;(输出流辅 助类) > class postrema_ withassign: public iostream;(输入(输 出流辅助类)
第一节 流库的类层次结构 ⑵ iostream —— 输入输出流类——由istream 及ostream 派生得到: ➢class ios; ➢class istream :virtual public ios; ➢class ostream :virtual public ios; ➢class iostream :public istream,public ostream; ⑶ 在istream、ostream、iostream的基础上重载“=”, 派生出: ➢class istrema_withassign : public istream;(输入流辅 助类) ➢class ostrema_withassign : public ostream;(输出流辅 助类) ➢class iostrema_withassign : public iostream;(输入/输 出流辅助类)
第一节流库的类层次结构 (4)cin、cout、cree、clog对象—在 iostream. h中定义: extrean istrema withassign cin i extrean ostrema withassign cout extrean ostrema withassign cerr extrean ostrema withassign clog 其中: >cin与标准输入设备(即键盘)相关联 cout与标准输出设备(即显示器)相关联 scer与标准错误输出设备(默认为显示器)相关联 (非缓冲方式) >clog与标准错误输出设备(默认为显示器)相关联 (缓冲方式)
第一节 流库的类层次结构 ⑷ cin、cout、cree、clog对象——在iostream.h中定义: ➢ extrean istrema_withassign cin ; ➢ extrean ostrema_withassign cout ; ➢ extrean ostrema_withassign cerr; ➢ extrean ostrema_withassign clog ; 其中: ➢cin与标准输入设备(即键盘)相关联 ➢cout 与标准输出设备(即显示器)相关联 ➢cerr 与标准错误输出设备(默认为显示器)相关联 (非缓冲方式) ➢clog与标准错误输出设备(默认为显示器)相关联 (缓冲方式)
第一节流库的类层次结构 ()C+新标准流库 >C+新标准流库所包含的头文件都不带h,仍然用 承的万法建立输入输入出(o)类库“菜用 板建立—安全性、可扩充性更好。 >新标准流库层次结构(教材P346图78 >新标准流库中常用的头文件(教材①P52) ☆ iostream:当用预定义流对象cin/cout进行输入/输 出操作时,必须用头文件引入到程序中 ★ fstream:当使用文件流对象进行文件读写操作时, 必须用头又件号人到程序中 ★ strstream:当使用字符串流对象 符串进入输 入输出操作时,必须用头文件引入到程序中 ★ sstream ★ toman:当使用setw()等函数进行格式化输入 输出时,必须用头文件引入到程序中;
第一节 流库的类层次结构 ㈡ C++新标准流库 ➢C++新标准流库所包含的头文件都不带.h ,仍然用继 承的方法建立输入输入/输出(I/O)类库——采用模 板建立——安全性、可扩充性更好。 ➢新标准流库层次结构(教材①P346图7.8) ➢新标准流库中常用的头文件(教材①P52): iostream: 当用预定义流对象cin/cout进行输入/输 出操作时,必须用头文件引入到程序中; fstream:当使用文件流对象进行文件读写操作时, 必须用头文件引入到程序中; strstream: 当使用字符串流对象对字符串进入输 入/输出操作时,必须用头文件引入到程序中; sstream: iomanip:当使用setw( )等函数进行格式化输入 输出时,必须用头文件引入到程序中;
第一节流库的类层次结构 4个预定义标准流对象 >在C++新标准流库中将类模板 basic istres basic ostream实例化为模板类,并重新定义为 istream、 ostream(以便与旧标准相同)如 type basic ostream> ostream 预定义四个标准流对象: extern istream cin extern ostream cout extern ostream cerr; extern ostream clog i 含义与旧标准的相同
第一节 流库的类层次结构 ㈢ 4个预定义标准流对象 ➢在C++新标准流库中将类模板basic_istream、 basic_ostream实例化为模板类,并重新定义为istream、 ostream(以便与旧标准相同)如: type basic_ostream> ostream ➢预定义四个标准流对象: extern istream cin ; extern ostream cout ; extern ostream cerr ; extern ostream clog ; —— 含义与旧标准的相同
第二节輸出流 在C++中,将“输出运算符“可以重载“函数原型声明 ostream &ostream: put( char c); >作用:可用作为二进制数据(字节)或单个字符输出。 >调用格式: cout.put字符)
第二节 输出流 ➢在C++中,将“<<”(即左移运算符)重载为输出运 算符; ➢输出运算符“<<”有二个运算分量,左边(左分量) 为输出流ostream对象(cout),右边(右分量)为一 个基本类型数据 ➢可以重载“<<”输出结构变量或类对象。 一、基本数据类型数据输出 二、ostream类中的主要成员函数 1、put( )函数 ➢函数原型声明 ostream &ostream::put( char c); ➢作用:可用作为二进制数据(字节)或单个字符输出。 ➢调用格式:cout.put(字符)