第7章C的输入输出流库.ppt

上传人:本田雅阁 文档编号:2257633 上传时间:2019-03-12 格式:PPT 页数:24 大小:142.51KB
返回 下载 相关 举报
第7章C的输入输出流库.ppt_第1页
第1页 / 共24页
第7章C的输入输出流库.ppt_第2页
第2页 / 共24页
第7章C的输入输出流库.ppt_第3页
第3页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第7章C的输入输出流库.ppt》由会员分享,可在线阅读,更多相关《第7章C的输入输出流库.ppt(24页珍藏版)》请在三一文库上搜索。

1、第7章 C+的输入输出流库,7.1 C+标准输入输出 7.2 用户自定义类型的I/O流 7.3 文件输入输出流 习题,7.1 C+标准输入输出,7.1.1 C+输入输出流库 7.1.2 C+格式输入输出,7.1.1 C+输入输出流库,1C+输入输出流库的概念 所谓流,是指数据从一个对象流向另一个对象,是从源到矢的数据流的抽象引用,它是描述数据流的一种方式。C+的输入输出系统是对流的操作,也就是将数据流向流对象,或从流对象流出数据。流是C+流库用继承方法建立起来的一个输入/输出类库,它具有两个平行的基类即streambuf类和ios类,所有其它的流类都是从它们直接或间接地派生出来的。 在C+语言

2、系统中所有的流式输入输出操作都是借助ios类及其派生类对象实现的。,2 C+所有输入输出类的继承关系,cout、cin,1、cout是类ostream的对象,是提取运算符 istream,7.1.2 C+格式输入输出,1. 使用ios类中的枚举常量 2. 使用I/O操作符 3. 使用ios成员函数,1. 使用ios类中的枚举常量,在根基类ios中定义有三个用户需要使用的枚举类型,由于它们是在公用成员部分定义的,所以其中的每个枚举类型常量在加上ios:前缀后都可以为本类成员函数和所有外部函数访问。在三个枚举类型中有一个无名枚举类型,其中定义的每个枚举常量都是用于设置控制输入输出格式的标志使用的。

3、该枚举类型定义如下: enum skipws,left,right,internal,dec,oct,hex,showbase,showpoint, uppercase,showpos, scientific, fixed,unitbuf,stdio;,2. 使用I/O操作符,#include I/O流的常用控制符如表7.1所示。 【例7.1】使用控制符hex、oct和dec控制输出 8进制、16进制和10进制数。 【例7.2】使用setw设置值的输出宽度。 【例7.3】用setfill控制符设置填充字符。 【例7.4】控制浮点数值显示。 【例7.5】左右对齐输出。 【例7.6】强制显示小数点

4、。 【例7.7】强制显示符号。,3. 使用ios成员函数,(1)istream 该函数与getline基本相同,唯一不同的是getline函数从输入流中输入一系列字符时包括分隔符,而get函数不包括分隔符。,例题:,【例7.8】从键盘读取一行文本,每遇到一个逗号就结束一次输入。 【例7.9】分析下列程序的运行结果。,7.2 用户自定义类型的I/O流,用户自定义的数据类型的输入与输出也可以象系统标准类型的输入与输出那样直接方便,用户可根据自己的需要为插入运算符赋以新的含义,使它按用户的意愿输出类的内容,这在C中采用重载运算符“”来实现。 1重载输入运算符 通过重载输入运算符“”来实现用户自定义类

5、型的输入,定义格式如下:,1重载输入运算符,istream 这里user_type为用户自定义类型;obj为用户自定义类型的对象的引用;item1、item2和item3为用户自定义类型中的各个成员。,2. 重载输出运算符,stream ,3. 重载输入输出运算符的举例,【例7.10】重载插入运算符使其能输出人民币对象。 【例7.11】在由实数部分和虚数部分组成的复数中,重载“”和 “”,使用户能直接输入和输出复数。,7.3 文件输入输出流,7.3.1 文件I/O流 7.3.2 文件的打开与关闭 7.3.3 文件的读写操作,7.3.1 文件I/O流,文件是指存储在外部介质上的具有名字的一组相关

6、数据的集合。系统和用户都可以将具有一定功能的程序模块、一组数据命名为一个文件。 C+中把文件看作是一个字符(字节)序列,即由一个个字符(字节)按顺序组成。根据数据的组织形式,文件分为ASCII码文件和二进制文件。 C+定义了fstream、ifstream、ofstream文件处理类,它们分别从I/O流中的iostream、istream、ostream类派生。,7.3.2 文件的打开与关闭,C+提供了以下两种打开文件的方式。 1将文件流对象直接与需要操作的文件相连 这种方式可通过调用输入输出流类的构造函数来完成。以输出流类ofstream为例,它其中一个常用的构造函数定义如下: ofstre

7、am:ofstream(char *fileName ,int openMode=ios:out,int port= filebuf:openport) 第一个参数指文件路径及文件名字符串,第二个参数说明文件打开方式,第三个参数说明文件保护方式。打开方式如表7.2所示,文件保护方式如表7.3所示。,【例7.12】下面的程序可由用户输入任意一些字符串并按行保存到磁盘文件中。 【例7.13】编程将上面文件内容输出到屏幕上。,2先定义文件流对象,再与文件连接。,这种方式是先定义文件流对象,再用open函数将其与需要操作的对象的文件相连。成员函数open的形式: void open (const ch

8、ar *s, int mode, int port=filebuf:openport); 其中,filename是文件名字,它可包含路径说明。mode说明文件打开的模式,它对文件的操作影响重大,mode的取值如表7.4所示。调用close函数关闭文件,成员函数close的形式为: close();,7.3.3 文件的读写操作,1文件的读写 由于文件流ifstream、ofstream和 fstream是从istream、ostream和iostream类派生的,所以在标准I/O流类中的输入输出操作,仍适用于文件I/O操作。 文件的读写可以采用以下两种方式: (1) 使用流运算符直接读写。 (2

9、) 使用流成员函数。 【例7.14】文件复制,即将一个文件的内容输入到输出文件中。,2文本文件的读写,对于文本文件的读写只需使用重载运算符“”。 【例7.15】文本文件的读写操作,请输入一个学生的姓名、学号、年龄和住址存入文本文件中,然后读出该文件的内容。,3二进制文件的读写,二进制文件不同于文本文件,它可用于任何类型的文件(包括文本文件),读写二进制文件的字符不作任何转换,读写的字符与文件之间是完全一致的。文本文件和二进制文件最根本的区别在于进行I/O操作时对n字符的解释方式,在C+中,这个字符表示ASCII代码为0x0A的字符(换行)。当文件以文本方式打开时,流类在向文件缓冲区中插入字符时

10、,凡遇到代码为0x0A的字符,都将其扩展为二个字符,即0x0D和0x0A(即回车和换行字符),这是操作系统对文本文件所要求的格式。当从流中提取一个字符时,当流类遇到字符0x0D时,流类都将它和其后的字符0x0A合并为一个字符n。当文件以二进制方式打开时,所有的字符都按一个二进制字节处理,不再对0x0A字符作变换处理。 一般地,对二进制文件的读写可采用两种方法:一种是使用get()和put();另一种是使用read()和write()。,3二进制文件的读写,使用二进制文件,可以控制字节长度,读写数据时不会出现二义性,可靠性高。同时不知道格式是无法读取的,保密性好。文件结束后,系统不会再读,但程序

11、不会自动停下来,所以要判断文件中是否已没有数据。如写完数据后没有关闭文件,直接开始读,则必须把文件定位指针移到文件头。如果关闭文件后重新打开,文件定位指针就在文件头。 【例7.16】建立一个应用程序,包括数据输入、存盘、读盘、操作数据后存储。通过随机数函数rand()产生20个整数,逐个将这些数以二进制方式写入文件file.dat中。然后读出这些数,在内存中对它们进行升序排序,再将排序后的数以文本方式逐个写入file.out文件中。,4文件的随机访问,每一个文件都有两个指针,一个是读指针,说明输入操作当前在文件中的位置;另一个是写指针,说明写操作的当前位置。每次执行输入或输出操作时,相应的读写

12、指针将自动后移。C+语言的文件流不仅可以按顺序方式进行读写,还可以随机地移动文件的读写指针。 文件的随机读写用函数seekg()和seekp()完成,函数名中的g和p分别表示get与put。istream类中提供了三个成员函数,用于在输入流内随机移动文件的当前指针 【例7.17】文件的随机访问。,习题,1. 对于一般的输入输出,C+的输入输出系统如何进行格式控制? 2. 如何对文件进行读写操作? 3. 从键盘输入一个字符串,并逐个将字符串的每个字符传送到磁盘文件中,字符串的结束标记为“!”。 4输出十进制、八进制、十六进制显示的数据015。 5. 类stu用来描述学生的姓名、学号、数学成绩、英语成绩,分别建立文本文件和二进制文件,将若干学生的信息保存在文件中,读出该文件的内容。 6设计一个留言类,实现以下的功能。 (1) 程序第一次运行时,建立一个message.txt文本文件,并把用户输入的信息存入该文件。 (2) 以后每次运行时,都先读取该文件的内容并显示给用户,然后由用户输入新的信息,退出时将新的信息存入这个文档。文件的内容,既可以是最新的信息,也可以包括以前所有的信息,用户可自己选择。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1