c++程序设计课程介绍-第14章 输入输出与文件课件

上传人:aa****6 文档编号:57227543 上传时间:2018-10-20 格式:PPT 页数:98 大小:188KB
返回 下载 相关 举报
c++程序设计课程介绍-第14章 输入输出与文件课件_第1页
第1页 / 共98页
c++程序设计课程介绍-第14章 输入输出与文件课件_第2页
第2页 / 共98页
c++程序设计课程介绍-第14章 输入输出与文件课件_第3页
第3页 / 共98页
c++程序设计课程介绍-第14章 输入输出与文件课件_第4页
第4页 / 共98页
c++程序设计课程介绍-第14章 输入输出与文件课件_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《c++程序设计课程介绍-第14章 输入输出与文件课件》由会员分享,可在线阅读,更多相关《c++程序设计课程介绍-第14章 输入输出与文件课件(98页珍藏版)》请在金锄头文库上搜索。

1、第14章 输入输出与文件,输入输出是指程序与外部设备交换信息 C+把输入输出看成是一个数据流 输入流:外围设备流向内存的数据 输出流:内存流向外围设备的数据 在C+中,输入输出不是语言所定义的部分,而是由标准库提供。 C+的输入输出分为: 基于控制台的I/O 基于文件的I/O 基于字符串的I/O,输入输出与文件,流与标准库 输入输出缓冲 基于控制台的I/O 基于文件的I/O 基于字符串的I/O,流的概念及用途,I/O操作是以对数据类型敏感的方式执行的。C+的I/O操作是以字节流的形式实现的。流实际上就是字节序列。 C+提供了低级和高级I/O功能。低级I/O功能通常只在设备和内存之间传输一些字节

2、。高级I/O功能把若干个字节组合成有意义的单位,如整数、浮点数、字符、字符串以及用户自定义类型的数据。 C+提供了无格式I/O和格式化I/O两种操作。无格式I/O传输速度快,但使用起来较为麻烦。格式化I/O按不同的类型对数据进行处理,但需要增加额外的处理时间,不适于处理大容量的数据传输。,流与标准库,类的继承关系,输入输出与文件,流与标准库 输入输出缓冲 基于控制台的I/O 基于文件的I/O 基于字符串的I/O,输入输出缓冲,C+的输入输出是基于缓冲实现的 每个I/O对象管理一个缓冲区,用于存储程序读写的数据 当用户在键盘上输入数据时,键盘输入的数据是存储在输入缓冲区中,当执行“”操作时,从输

3、入缓冲区中取数据存入变量,如缓冲区中无数据,则等待从外围设备取数据放入缓冲区“”是将数据放入输出缓冲区。如有下列语句:os “please enter the value:”;系统将字符串常量存储在与流os关联的缓冲区中,输出缓冲区的刷新,程序正常结束。作为main函数返回工作的一部分,将真正输出缓冲区的内容,清空所有的输出缓冲区; 当缓冲区已满时,在写入下一个值之前,会刷新缓冲区; 用标准库的操纵符,如行结束符endl,显式地刷新缓冲区; 在每次输出操作执行结束后,用unitbuf操纵符设置流的内部状态,从而清空缓冲区; 可将输出流与输入流关联起来。在这种情况下,在读输入流时,将刷新其关联的

4、输出缓冲区。在标准库中,将cout和cin关联在一起,因此每个输入操作都将刷新cout关联的缓冲区。,输入输出与文件,流与标准库 输入输出缓冲 基于控制台的I/O 基于文件的I/O 基于字符串的I/O,基于控制台的I/O,标准的输入输出流对象 cin是类istream的对象,它与标准输入设备(通常指键盘)连在一起。 cout是类ostream的对象,它与标准输出设备(通常指显示设备)连在一起。 cerr是类osteam的对象,它与标准错误输出设备连在一起。 clog是类ostream的对象,它与标准错误输出设备连在一起。,基于控制台的I/O,输出流 输入流 格式化输入/输出,输出流,C+的类o

5、stream提供了格式化输出和无格式输出的功能 输出功能包括 用流插入运算符输出标准类型的数据; 用成员函数put输出字符; 成员函数write的无格式化输出; 输出特定形式数值,输出标准类型的数据,标准类型的数据用流插入运算符输出 格式:cout 数据项 ; C+能自动判别数据类型,并根据数据类型解释内存单元的信息,把它转换成字符显示在显示器上。,输出流,#include using namespace std; int main() int a = 5, *p = ,a = 5 x = 1234.56 ch = a *p = 5 p = 0012FF7C,地址用十六进制输出,指针输出的特例

6、,如果输出的指针变量是一个指向字符的指针时,C+并不输出该指针中保存的地址,而是输出该指针指向的字符串。 如果确实想输出这个指向字符的指针变量中保存的地址值,可以用强制类型转换,将它转换成void*类型,#include using namespace std; int main() char *ptr = “abcdef“;cout “ptr指向的内容为: “ ptr endl;cout “ptr中保存的地址为:“ (void*)ptr Get函数 Getline函数 其他函数,流读取运算符,输入流最常用的操作是流读取运算符。 流读取运算符通常会跳过输入流中的空格、tab键、换行符等空白字符

7、。 当遇到输入流中的文件结束符时,流读取运算符返回0(false);否则,流读取运算符返回对调用该运算符的对象的引用。 流读取运算符在读入EOF时返回0的特性使得它经常被用作为循环的判别条件,以避免选择特定的表示输入结束的值 EOF在各个系统中有不同的表示。在windows中是Ctri+z,实例,统计某次考试的最高成绩。假定事先不知道有多少个考试成绩,在输入结束时用户会输入表示成绩输入完毕的文件结束符。当用户输入文件结束符时,while循环结构中的条件(cingrade)将变为0(即false)。,#include using namespace std; int main() int gra

8、de, highestGrade = -1;cout grade) if ( grade highestGrade) highestGrade = grade;cout “Enter grade (enter end-of-file to end): “;cout “nnHighest grade is: “ highestGrade endl;return 0;,输出结果: Enter grade (enter end-of-file to end): 67 Enter grade (enter end-of-file to end): 87 Enter grade (enter end o

9、f file to end): 73 Enter grade (enter end-of-file to end): 95 Enter grade (enter end-of-file to end): 34 Enter grade (enter end-of-file to end): 99 Entergrade (enter end-of-file to end): z Heighest grade is: 99,成员函数get,Get函数用于读入字符或字符串 get函数有三种格式: 不带参数 带一个参数 带三个参数,不带参数的get函数,不带参数的get函数从当前对象读入一个字符,包括空

10、白字符以及表示文件结束的EOF,并将读入值作为函数的返回值返回。如下列语句while(ch = cin.get() !=EOF) cout ch;将输入的字符回显在显示器上,直到输入EOF。,#include Using namespace std; int main() char c; while ( ( c = cin.get() ) != EOF ) cout.put( c ); cout “nEOF in this system is: “ ch1 ;则字符变量ch1中保存的是“.”。,#include Using namespace std; int main() const int

11、 SIZE = 80; char buffer1 SIZE , buffer2 SIZE ; cout buffer1; cout “nThe string read with cin was:n“ buffer1 “nn“; cin.get( buffer2, SIZE );cout “The string read with cin.get was:n“ buffer2 endl; return 0; ,输出结果: Enter a sentence: Contrasting string input with cin and cin.get The string read with cin was: Contrasting The string read with cin.get was: string input with cin and cin.get,成员函数getline,与带三个参数的get函数类似,它读取一行信息到字符数组中,然后插入一个空字符。所不同的是,getline要去除输入流中的分隔符(即读取字符并删除它),但是不把它存放在字符数组中。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号