工信版(中职)编程语言基础------C++模块11教学课件.ppt
《工信版(中职)编程语言基础------C++模块11教学课件.ppt》由会员分享,可在线阅读,更多相关《工信版(中职)编程语言基础------C++模块11教学课件.ppt(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Y CF(中职)编程语言基础-C+模块11 教学课件模块11 C+流与文件 任务1 C+流的概述 任务2格式化输入和输出 任务3文件返回任务1 C+流的概述 学习一种程序设计语言往往从编写一个简单的输出程序开始。学习一种程序设计语言往往从编写一个简单的输出程序开始。下一页 返回任务1 C+流的概述 例 例11 11 一 一1 1 是一个简单的 是一个简单的C C 程序,主要功能是在显示屏上输出 程序,主要功能是在显示屏上输出“Hello Hello World!World!,实现这一功能的是函数,实现这一功能的是函数printf printf。然而,。然而,C+C+语言本身并没 语言本身并没有
2、定义输入、输出函数,它的输入、输出功能是通过调用外部库函数 有定义输入、输出函数,它的输入、输出功能是通过调用外部库函数来实现的。来实现的。printf()printf()函数属于 函数属于“stdio.h(stdio.h(标准输入 标准输入/输出 输出)库,因此,库,因此,在程序中使用 在程序中使用printf)printf)函数时,需要通过 函数时,需要通过includ includ。语句引用、。语句引用、tdi tdi。库,。库,即 即#include#include 在 在C+C+中,除了继续使用 中,除了继续使用C C 语言习惯用的库函数实现输入输出,还 语言习惯用的库函数实现输入输
3、出,还引人了 引人了“流 流(stream)”(stream)”的概念。的概念。“流 流”即数据流,是字符序列在主机与 即数据流,是字符序列在主机与外部介质之间的流动,它负责在数据的产生者和使用者之间建立联系,外部介质之间的流动,它负责在数据的产生者和使用者之间建立联系,并管理数据的流动。每一种流都是与设备相关的对象。并管理数据的流动。每一种流都是与设备相关的对象。上一页 下一页 返回任务1 C+流的概述 它具有方向性 它具有方向性:与输入设备相联系的流称为输入流 与输入设备相联系的流称为输入流;与输出设备相联系 与输出设备相联系的流称为输出流 的流称为输出流;与输入输出设备 与输入输出设备(
4、如磁盘 如磁盘)相联系的流称为输入输出流。相联系的流称为输入输出流。表 表11-1 11-1 是 是C+C+中的标准流设备以及对应的 中的标准流设备以及对应的C C 语言中的设备名称。语言中的设备名称。cerr cerr 与 与tout tout 的输出默认设备都是屏幕,二者的区别是 的输出默认设备都是屏幕,二者的区别是cout cout 为标准输出,为标准输出,而 而cerr cerr 为标准错误输出,为标准错误输出,cerr cerr 的输出没有缓冲区,结果会立刻显示在 的输出没有缓冲区,结果会立刻显示在用户终端上。用户终端上。数据的流动需要管道,而流通的管道就是 数据的流动需要管道,而流
5、通的管道就是“”(”(”(输入操作符 输入操作符)。“”原本是 原本是C+C+语言中的左移和右 语言中的左移和右移运算符,它们在 移运算符,它们在C+C+中被重载为输出和输入操作符,并有了新的名 中被重载为输出和输入操作符,并有了新的名称 称:插人运算符和提取运算符。插人运算符和提取运算符。上一页 下一页 返回任务1 C+流的概述 在 在C+C+中 中“流 流”是可以扩充的。例如定义了一个结构 是可以扩充的。例如定义了一个结构MyStruct MyStruct 后,就 后,就可以教会插人运算符如何输出一个结构对象,教会提取运算符如何读 可以教会插人运算符如何输出一个结构对象,教会提取运算符如何
6、读取一个结构对象。取一个结构对象。现在,看看 现在,看看C+C+风格的 风格的“Hello World”Hello World”是如何编写的。是如何编写的。上一页 下一页 返回任务1 C+流的概述 在这个程序中,用 在这个程序中,用iostream iostream 库代替 库代替stdio stdio 库,用插人运算符 库,用插人运算符“”代替 代替printf printf,用换行标志,用换行标志endl endl 代替 代替“n,cout n,cout 是标准流设备,代表屏幕。是标准流设备,代表屏幕。程序按照从左到右的顺序先在屏幕上输出 程序按照从左到右的顺序先在屏幕上输出“Hello
7、World Hello World,再输出换,再输出换行符。行符。iostream iostream 库函数改进了 库函数改进了stdio stdio 库函数,它所提供的任何事物都被封装 库函数,它所提供的任何事物都被封装在命名空间 在命名空间std std 内。命名空间是一种将程序库名称封装起来的方法。内。命名空间是一种将程序库名称封装起来的方法。上一页 下一页 返回任务1 C+流的概述上一页 下一页 返回任务1 C+流的概述 C+C+中的流由相应的类创建,并通过相应的方法操作。中的流由相应的类创建,并通过相应的方法操作。C+C+中流的类 中流的类层次结构如 层次结构如 图 图11-1 11
8、-1 所示。由图中可以看到,所示。由图中可以看到,ios ios 类是虚基类,派生出 类是虚基类,派生出istream istream 类和 类和ostream ostream 类。类。istream istream 类是通用输入流类和其他输入流的基 类是通用输入流类和其他输入流的基类,负责创建输入流,其中定义了输入运算符 类,负责创建输入流,其中定义了输入运算符“”的各种重载形式,的各种重载形式,它还包括一些更传统的语句如 它还包括一些更传统的语句如bet()bet()和二 和二ad ad。它的派生类。它的派生类ifstream ifstream 类负 类负责处理文件的输入,责处理文件的输入
9、,istrstream istrstream 类负责处理字符串,类负责处理字符串,istream_ istream_ withassign withassign 类创建了标准输入对象 类创建了标准输入对象cin cin。相对应地,。相对应地,ostream ostream 类是通用输 类是通用输出流类和其他输出流类的基类,定义了输出运算符 出流类和其他输出流类的基类,定义了输出运算符“”的各种重载 的各种重载形式,其派生类 形式,其派生类ofstream ofstream 类负责处理文件,类负责处理文件,ostrstream ostrstream 负责处理字符串,负责处理字符串,ostream
10、-withassign ostream-withassign 创建了标准输出对象 创建了标准输出对象cout cout、标准错误输出、标准错误输出cerr cerr 和 和clog clog(cerr(cerr 的缓冲形式 的缓冲形式)。iostream iostream 类是由 类是由is-is-tream tream 类和 类和ostream ostream 类派生的,负责创建输入输出流。类派生的,负责创建输入输出流。上一页 下一页 返回任务1 C+流的概述 C+C+提供了一个流类库,流类库由若干完成 提供了一个流类库,流类库由若干完成I/0 I/0 操作的基础类以及若干 操作的基础类以及
11、若干支持特定种类的源和日标的 支持特定种类的源和日标的I/o I/o 操作类组成。流类库的基础类利用继承 操作类组成。流类库的基础类利用继承关系组织起来,其类层次如图 关系组织起来,其类层次如图11-1 11-1 所示,这些类的说明如 所示,这些类的说明如 表 表11-2 11-2 所示。所示。所有使用流类库的程序必须用 所有使用流类库的程序必须用“#include”#include”编译指令将 编译指令将“iostream.iostream.h”h”包含进来。包含进来。上一页 返回任务2格式化输入和输出 在以前的程序中,所有 在以前的程序中,所有I/O I/O 采用的格式都是由 采用的格式都
12、是由C+C+流类库提供的默认 流类库提供的默认方式。在实际应用中,常常需要准确控制数据 方式。在实际应用中,常常需要准确控制数据(特别是整数、浮点数与 特别是整数、浮点数与字符串 字符串)的 的I/O I/O 格式。流类库可用两种方法控制数据的格式 格式。流类库可用两种方法控制数据的格式:使用流对象 使用流对象的成员函数和使用 的成员函数和使用I/O I/O 控制符。控制符。11.2.1 使用流对象的成员函数下一页 返回任务2格式化输入和输出上一页 下一页 返回任务2格式化输入和输出 precision()precision()为 为cout cout 对象的成员函数,在要求输出一定精度的数据
13、之前,对象的成员函数,在要求输出一定精度的数据之前,先调用这个精度设置成员函数。先调用这个精度设置成员函数。)上一页 下一页 返回任务2格式化输入和输出 11.2.2 用控制符 manipulators(manipulators(控制符 控制符)是在头文件 是在头文件iomanip.h iomanip.h 中定义的对象,与成员函 中定义的对象,与成员函数调用效果一样。控制符的优点是程序可以直接将它们插人流中,不 数调用效果一样。控制符的优点是程序可以直接将它们插人流中,不必单独调用。必单独调用。上一页 下一页 返回任务2格式化输入和输出上一页 下一页 返回任务2格式化输入和输出 常用控制符和流
14、格式控制成员函数如 常用控制符和流格式控制成员函数如 表 表11-3 11-3 所示。所示。控制符和流成员函数相对应,它们用法不同,但作用相同。控制符和流成员函数相对应,它们用法不同,但作用相同。其中 其中setw(n)setw(n)或 或width(n)width(n)很特别,它们在下一个域输出后,又回到原先 很特别,它们在下一个域输出后,又回到原先的默认值。的默认值。上一页 下一页 返回任务2格式化输入和输出 运行结果中的下横线表示空格。整数 运行结果中的下横线表示空格。整数20 20 并没有按宽度 并没有按宽度8 8 输出。输出。setw()setw()的 的默认值为宽度 默认值为宽度0
15、.0.即 即setw(O)setw(O),意思是,按输出对象的表示宽度输出。所,意思是,按输出对象的表示宽度输出。所以 以20 20 就紧挨 就紧挨10 10 了。若要每个数值都有域宽度 了。若要每个数值都有域宽度8 8,则每个值都要设置,则每个值都要设置:coutsetw(8)10 coutsetw(8)10 setw(8)20endl setw(8)20endl 从中得出,用控制符的方法更加直接。从中得出,用控制符的方法更加直接。上一页 下一页 返回任务2格式化输入和输出上一页 下一页 返回任务2格式化输入和输出上一页 下一页 返回任务2格式化输入和输出 Coutsetfill()setw
16、(n)“”Coutsetfill()setw(n)“”中 中“”“”要显示的长度为 要显示的长度为n n,但它本身,但它本身的长度只有 的长度只有1 1,所以其余的内容也就由,所以其余的内容也就由setfill()setfill()来填充了,效果就使 来填充了,效果就使得 得 a a 前的空格逐行增加。同样,前的空格逐行增加。同样,coutsetfill(a)setw(15-2*n,),coutsetfill(a)setw(15-2*n,),但它本身的长度只有 但它本身的长度只有1 1,所以其余的内容就有,所以其余的内容就有setfill setfill 来填充了,由于 来填充了,由于15-1
17、5-2 2*n n 逐行递减,结果就显示出一个用 逐行递减,结果就显示出一个用a a 构筑的倒三角 构筑的倒三角上一页 返回任务3文件 11.3.1 流式文件的I/O 函数 流式 流式I/O I/O 函数把所有输出写人到输出缓冲区中,并不是在执行输出语 函数把所有输出写人到输出缓冲区中,并不是在执行输出语句时直接向输出设备输出数据。当写满输入缓冲区后,将所有数据写 句时直接向输出设备输出数据。当写满输入缓冲区后,将所有数据写人磁盘。人磁盘。流式文件 流式文件I/O I/O 函数分为缓冲型文件系统和非缓冲型文件系统两种。函数分为缓冲型文件系统和非缓冲型文件系统两种。缓冲型文件系统又称为 缓冲型文
18、件系统又称为ANSI ANSI 系统,它通过文件指针对文件进行操 系统,它通过文件指针对文件进行操作,是标准系统,可以在绝大多数运行 作,是标准系统,可以在绝大多数运行PC PC 类操作系统的 类操作系统的PC PC 机上使用。机上使用。非缓冲型文件系统采用 非缓冲型文件系统采用UNIX UNIX 系统标准,只能在 系统标准,只能在UNIX UNIX 系统下使用。系统下使用。它不使用文件指针。本任务只介绍缓冲型文件系统中的文件 它不使用文件指针。本任务只介绍缓冲型文件系统中的文件I/O I/O 函数。函数。文件 文件I/()I/()函数的大部分包括在 函数的大部分包括在stdio.h stdi
19、o.h 文件中,包括对文件的各种操 文件中,包括对文件的各种操作函数,分为以下几类函数。作函数,分为以下几类函数。下一页 返回任务3文件 文件的打开与关闭。文件的打开与关闭。文件的读写。文件的读写。文件定位。文件定位。文件错误检测。文件错误检测。缓冲区设置。缓冲区设置。流式文件 流式文件I/O I/O 函数将流与文件联系起来,用流表示文件,所有数据 函数将流与文件联系起来,用流表示文件,所有数据的 的I/0 I/0 操作在流上进行。当用户程序开始执行时,自动打开 操作在流上进行。当用户程序开始执行时,自动打开5 5 个流。这 个流。这些流是标准输入 些流是标准输入(stdin(stdin、标准
20、输出、标准输出(std-out(std-out、标准错误、标准错误(stderr(stderr、标准打、标准打印 印(stdprn(stdprn、标准辅助、标准辅助(stdaux),(stdaux),默认情况下,标准输入、标准输出和 默认情况下,标准输入、标准输出和标准错误都指向用户的控制台。这意味着,一旦程序准备从标准输入 标准错误都指向用户的控制台。这意味着,一旦程序准备从标准输入接收输入,则从控制台接收。接收输入,则从控制台接收。)上一页 下一页 返回任务3文件 文件 文件I/()I/()的基本过程为 的基本过程为:打开文件 打开文件;读写文件 读写文件;错误检测 错误检测;关闭文 关闭
21、文件。件。下面按类别介绍文件 下面按类别介绍文件I/O I/O 函数。函数。1.1.文件的打开与关闭函数 文件的打开与关闭函数 访问一个文件,必须先打开文件。打开文件的函数为 访问一个文件,必须先打开文件。打开文件的函数为fopen fopen,函数,函数原型为 原型为:FILE*fopen(cons char*filename FILE*fopen(cons char*filename,char*mode char*mode 其中,其中,filename filename 是 是文件名,文件名,mode mode 是文件的 是文件的I/0 I/0 方式,具体含义如 方式,具体含义如 表 表1
22、1-4 11-4 所示,函数返回 所示,函数返回 值是一个 值是一个FILE FILE 类型的指针。类型的指针。上一页 下一页 返回任务3文件 如果函数 如果函数fopen()fopen()执行成功,则 执行成功,则FILE FILE 指针指向指定的文件,否则,返 指针指向指定的文件,否则,返回一个空指针。回一个空指针。对文件的操作完毕后,要立即关闭文件。关闭文件 对文件的操作完毕后,要立即关闭文件。关闭文件操作将缓冲区中的数据写人文件中,并释放系统分配给流的缓冲区,操作将缓冲区中的数据写人文件中,并释放系统分配给流的缓冲区,断开文件和流的联系。关闭文件的函数有两个,它们的原型分别为 断开文件
23、和流的联系。关闭文件的函数有两个,它们的原型分别为:int fclose(FILE*stream);int fclose(FILE*stream);该函数的功能是关闭指定的流。如果关 该函数的功能是关闭指定的流。如果关闭成功,则返回 闭成功,则返回0 0,否则返回,否则返回EOF EOF)int fcloseall(void);int fcloseall(void);该函数的功能是关闭所有的非标准 该函数的功能是关闭所有的非标准I/0 I/0 流。如果关 流。如果关闭成功,则返回已关闭流的数量,否则返回 闭成功,则返回已关闭流的数量,否则返回EOF EOF)上一页 下一页 返回任务3文件 2.
24、2.文件的读写函数 文件的读写函数 文件的读写分为读写字符、读写字符串、读写格式以及直接读写等。文件的读写分为读写字符、读写字符串、读写格式以及直接读写等。(1)(1)读字符函数 读字符函数fgect():fgect():从流文件中读一个字符,函数原型为 从流文件中读一个字符,函数原型为:int fgetc(FILE*stream;int fgetc(FILE*stream;若函数执行成功,返回读取的字符,当遇到 若函数执行成功,返回读取的字符,当遇到文件结束或出错时,返回 文件结束或出错时,返回EOF EOF)(2)(2)写字符函数年 写字符函数年ute:ute:将字符输出到流中,函数原型为
25、 将字符输出到流中,函数原型为:int fputc(int ch int fputc(int ch,FILE*stream;FILE*stream;若函数执行失败,则返回 若函数执行失败,则返回EOF EOF)(3)(3)读字符串函数积 读字符串函数积ets():ets():函数积 函数积ets()ets()的原型为 的原型为:char*fgets(char*s char*fgets(char*s,int n int n,FILE*stream);FILE*stream);函数 函数fgets()fgets()从流中读人的 从流中读人的n n 个字符存到字符串 个字符存到字符串s s 中。执行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工信版 编程 语言 基础 C+ 模块 11 教学 课件
限制150内