- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
14章输入输出和文件ppt课件
第14章 输入输出和文件 输入和输出是人和计算机交互的手段,也是计算机生命所在,试想,如果一台机器既不接受任何形式的指令,也不给出任何形式的结果,这台机器的存在就没有了意义。几乎每个程序都要用到输入和输出,本书给出的示例代码中,显示结果是依靠cout,输入信息是依靠cin,这两个都是C++标准库中ostream类和istream类中提供了对象,此外,C++标准库还提供了其他类和对象,不仅仅可实现向屏幕输出、从键盘读入,还可以写入文件、从文件读入,本章重点讨论输入输出和文件相关内容。 14.1 输入输出概述 C++语言不具备内部输入输出能力,需要借助外部I/O包来完成,将输入输出具体要完成的操作留给编译器来做,这样做的目的是为了最大限度地保证语言与平台的无关性。因为输入输出功能都是与操作系统相关的,如果C++为某种操作系统实现内部输入输出功能,那它也就被限制在这个操作系统上了,举例来说,如果C++为windows内部实现了输入输出命令,那么该命令就只能用在windows环境下,在其他系统,如linux下将完全不起作用,这大大限制了程序的可移植性。 首先,先让我们一起来了解几个概念。 14.1.1 什么是文件 使用电脑时,经常遇到“文件”这个词,一般意义的理解是“存放在存储介质上的一组信息”,但从程序设计的角度看,文件的概念要宽泛得多。 文件的准确定义为“存放在外部介质上的以文件名为标识的数据的集合”,此处的外部介质不仅仅包括磁盘,还包括设备,比如键盘、显示器以及打印机等。凡是起到输入输出作用,与CPU直接或间接打交道的一组信息集合都是文件。 每个文件都以文件名为标识,I/O设备的文件名是系统定义的,如: COM1或AUX——第一串行口,附加设备 COM2——第二串行口,此外,还可能有COM3、COM4等 CON——控制台(console),键盘(输入用)或显示器(输出用) LPT1或PRN——第一并行口或打印机 LPT2——第二并行口,还可能有LPT3等 NUL——空设备 14.1.2 流 关于“流”,可以学院派地解释为“流是(表达)读写数据的一种可移植的方法,它为一般的I/O操作提供了灵活有效的手段。一个流是一个由指针操作的文件或者是一个物理设备,而这个指针正是指向了这个流。” 就C++程序而言, I/O操作可以简单地看作是从程序移进或移出字节,这种搬运的过程便称为流(stream)。程序只需要关心是否正确地输出了字节数据,以及是否正确地输入了要读取字节数据,特定I/O设备的细节对程序员是隐藏的。 C++中,所有的信息都是以0、1编码,所以,输出的字节(也就是0、1序列)代表什么,输入的源头或输出的目的都不是流所关心的内容,流的实质在于是否正确完成了运输任务,形象的表述如所示,左侧是输入流而右侧是输出流。 14.1.3 缓冲区 读者可能已对硬件缓冲区比较熟悉,为了匹配计算机快速设备和慢速设备间的通信步伐,计算机中大量使用了硬件缓冲区,如CPU中的Cache,内存也可以看成是一种缓冲区,用以高速CPU处理和相对瓶颈的硬盘存储速度之间的矛盾。 流是传输信息的一种逻辑表示,是具有缓冲作用的接口,同样有缓冲区的需求,但这里的缓冲区是一种逻辑概念,和物理设备中的缓冲区有所不同。通常,流的缓冲区是用作中介的内存块,是从设备传递到程序或者由程度传递给设备的临时存储池(pool),下面从文件输入和文件输出的角度来具体看一下缓冲区的作用。 14.1.4 重定向 标准的输出和输入设备通常指的是显示器和键盘,但一些操作系统支持重定向,这使得标准输入和输出能被替换,比如说,一个程序的信息原本是要输出到屏幕上的,可通过操作系统的支持,在不改变程序的前提下,便可用让信息输出到其他位置,以DOS系统来举例: #include iostream using namespace std; int main() { coutHello,txt will be shown on screen; return 0; } 14.1.5 3种输入输出机制 C++语言的输入输出机制包含3层,前两层是从传统的C语言继承而来,分别是底层I/O和高层I/O,第3层是C++中增添的流类库,这是本章讨论的重点。 (1)底层I/O:底层I/O依赖于操作系统来实现,调用操作系统的功能对文件进行输入输出处理,具有较高的速度。底层I/O将外部设备和磁盘文件都等同于逻辑文件,采用相同的方法进行处理,一般过程为“打开文件”、“读写文件”,“关闭文件”,这些是通过一组底层I/O函数来完成的,这些函数定义在头文件io.h中。 (2)高层I/O:高层I/O是在底层I/O的基础上扩展起来的,仍旧将外部设备和磁盘文件统一处理,但处理的方式更为灵活,提供的一组处理函数定义在头文件stdio.
文档评论(0)