网站大量收购闲置独家精品文档,联系QQ:2885784924

第12章流与文件操作.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第12章 流与文件操作 12.1 理解流机制 数据的输入输出(I/O)是程序设计中的基本操作之一。 数据输入可来自于键盘、鼠标、磁盘文件等设备,而数据输出的对象可以是显示器、打印机和磁盘文件等。 虽然C++允许使用C语言的输入输出函数,但也重新定义了一套旨在简化、安全和易于扩充(可编程)的I/O机制。 由于C++在输入时将数据由字符序列转换为二进制的对象,在输出时由二进制的对象转换为字符序列,其结果使得数据的输入输出类似于流体的流动,故称为流式I/O技术。 12.1.1 流与文件 I/O操作一般就是指数据在内存与文件之间的交换。 磁盘文件是最常见的一类文件,但在考虑I/O操作时,计算机系统中将常用设备(如显示器、键盘、打印机等)也都视为文件。 目的:可以使用同样的方法来完成对这些不同目标的操作。 流就是对文件的一种抽象。 文件操作多是以缓冲方式进行的。这里的缓冲是指对文件数据的一种临时存储技术。 12.1.2 理解源、汇和iostream流控制类 1. iostream类及类层次 C++的几个主要的I/O控制流类定义于头文件iostream,它们是由一组具有一定层次关系的模板类组成。 ⑴ios类 主要内容是以枚举方式定义了一系列与I/O有关的状态标志、工作方式等常量,还包括一些控制输入输出格式的方法。ios类中定义了一个成员作为流缓冲区指针。此外,ios类还是输入流istream和输出流ostream的虚基类。 ⑵streambuf类 此类主要负责流缓冲区的管理,定义了设置缓冲区、将输入流和输出流与缓冲区交换数据的方法。通常,用户不需要与此类打交道。 ⑶istream类和ostream类 从ios类虚拟派生,继承了ios类的成员,主要是对C++所有内置类型重载了和运算符。 ⑷iostream类 从istream和ostream派生,同时继承了两个类的成员,目的是能够支持输入和输出两个方向的操作。由于采用虚拟继承方式,能够保证每个iostream对象只有一份ios的拷贝。 ⑸分别由istream类、ostream类派生的istrstream类和ostrstream类,支持对数据在内存中的格式化。 ⑹分别由istream类、ostream类和ostream类派生的ifstream类、ofstream类和fstream类,支持对文件流的格式化I/O操作。 2. 预定义的流对象 头文件iostream中定义了3个对象,代表标准设备: ⑴cin。istream类的对象,代表标准输入设备,默认为键盘。 ⑵cout。ostream类的对象,代表标准输出设备,默认为显示器。 ⑶cerr。ostream类的对象,代表标准出错设备,即显示错误信息的设备,默认为显示器。 源cin在程序中的角色是生产者,而汇cout扮演的是消费者。只要是C++的内置类型,都可以采用源和汇实现输入和输出。 char a[100]; cin a; cout x= x , a= a endl; 字符数组a的定义长度是100,如果输入字符超过了99个(保留一个给系统存放’\0’)就会将数据写到数组之外,导致运行错误。因此要采用类方法(cin.getline)实现输入。 12.2 构造可流的类 如果希望能像普通内置数据一样,通过C++的流来输入或输出自定义类型(如String)的数据,可以重载输入运算符和输出运算符,使自定义类成为“可流的类”。 12.2.1 进一步探讨cout和cin对象 在C++中预定义了如下的与输入和输出有关的宏和类: stdout:代表标准输出设备(显示器)的宏; stdin:代表标准输入设备(键盘)的宏。 在iostream.h中定义的两个用于实现标准输入和输出的对象: istream cin(stdin); ostream cout(stdout); 由于ostream类和istream类对每个内置类型都以友员函数重载了和,如: friend ostream operator(ostream out, int source); friend ostream operator(ostream out, const char* psource); 因此,可以利用对象cout和cin正确输出和输入所有基本类型的数据。 12.2.2 重载输出运算符 重载运算符的函数原型为: ostream operator(ostream out, type src); 12.2.3 重载输入运算符 重载运算符时应遵循的语法形式: istream operator(istream in, type dest); 12.3 格式控制 为了实现对输入输出数据的格式控制,可以采用两大类方法,分别是使用ios类的方法和流控制类中定义的操

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档