- 1、本文档共35页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十章c的输入输出
第十章 输入/输出流 C++语言的输入/输出 C++的流类库 格式化输入/输出 常用成员函数输入/输出 设计自己的输入/输出操作 检测流操作的错误 流 文件 文件流的使用:文件的输入和输出 10.1 C++语言的输入/输出 外部设备与文件 外部设备分为两类:存储设备和输入/输出设备 存储设备用于存储信息,包括硬盘、软盘、磁带和光 盘等,这类设备上存储的数据在物理上往往是按字符块组 织的,因而也称块设备。 输入/输出分为输入设备和输出设备。输入设备是计算 机用于接受外界信息的设备,如键盘、鼠标等。输出设备 是将计算机处理完的数据送往外界的设备,如打印机、显 示器等。这两类设备上的数据往往是以字符为单位组织的, 所以称为字符设备。 文件可用于存储程序和数据,在程序中将文件作为输 入/输出的对象。 在操作系统中,输入/输出设备被视为一种特殊的文件。 CON---显示器、PRN---打印机 程序中对文件的操作 程序与外部设备的交互作用是通过操作系统中的文件系 统来实现,文件系统提供了一系列调用接口,程序利用这 些接口与外界进行交互。 使用一个文件前必须先打开它,即通知操作系统为文件 设置缓冲区并分配适当的设备;文件使用完毕必须关闭, 释放相应的缓冲区,设备与文件脱离联系。 高级语言提供了抽象层次更高的输入/输出机制,通过函 数库和类库完成。 C语言利用函数库完成输入/输出操作。scanf(),printf() C++提供了抽象层次更高的概念---流(stream)。输入/ 输出操作可看作是字符序列在源、目标与对象之间的流动 ,因而将完成输入/输出操作的类称为流类,由这些流类组 成了可重用的流类库。 文件的基本概念 C++语言将文件看作是一个字符序列,即由一个个字 节的数据顺序组成。将文件中的这些字节组织为记录是 由程序完成的,文件本身并没有划定任何边界。所以这 种文件又称为流式文件(stream file)。 (1)文本文件与二进制文件 (2)只读文件、只写文件与可读/写文件 (3)顺序文件与随机文件 (4)文件缓冲 10.2 C++的流类库 流类库的基本结构 这些类的界面在头文件iostream.h中给出了描述。使用 流类库的程序必须用#include预编译指令将iostream.h包 含进来。streambuf是最低级的类,负责管理一个流的缓冲 区。 预定义的流 流类库通过重载C++语言的运算符和完成输入/ 输出操作。 输入操作可看作从流中提取一个字符序列,所以把 称为提取符,该重载运算符在类istream中定义。输出操 作可看作向流中插入一个字符序列,所以把 称为插入 符,该重载运算符在类ostream中定义。 流是一个抽象的概念,实际进行输入/输出操作时必须 把流和一种具体的物理设备建立关联。例如将流和键盘 建立关联,… 流类库预定义了四个流对象:cin,cout,cerr,clog。这四个 流所关联的物理设备分别为标准输入、标准输出、无缓 冲的标准错误输出,有缓冲的标准错误输出。 支持文件的流类 为支持在程序中对文件进行操作,C++的流类库从图 10.2.1中派生了五个类,其类层次如图10.2.2所示。这些类 的界面在头文件fstream.h中定义。所以使用文件流类库的 程序必须用#include预编译指令将fstream.h包含进来。 支持字符串的流类 C++语言的流类库还支持在程序中的输入/输出数据格 式化,即把数据按一定格式输出到一个字符串中,或将 具有一定格式的字符串文本作为输入数据。具体做法是使 用字符串时,在流与字符串之间建立关联。 支持字符串的流类也从10.2.1中派生了五个类,其类层 次如图10.2.3所示。这些类的界面在头文件strstrea.h中 定义。所以使用字符串流类库的程序必须用#include预编 译指令将strstrea.h包含进来。 10.3 格式化输入/输出 流类库可以用两种方法控制数据的格式:一是使用ios 类的成员函数;二是使用输入/输出操纵符。 使用ios类的成员函数 P374 每一个输入流或输出流都有自己当前的数据格式控制状 态,这些状态用一个长整数表示,称为格式化标志字。 long x_flags; //ios类将它声明为受保护成员 x_flags是ios类的一个受保护成员,所以外界无法直接对这 个标志字进行操作,必须用ios类提供的公有成员函数setf()、 unsetf()来改变该标志字,使用flags()获取该标志字。
文档评论(0)