第7章输入/输出流对象 《面向对象程序设计》 七、输入/输出流对象 内容提要 螺旋矩阵的输入/输出问题 流 无格式输入/输出 输入/输出的格式控制 自定义类型对象的输入输出 文件的输入/输出问题 提出问题 编程输出M*M的螺旋矩阵,要求数据间距与M相同。例如,4*4的螺旋矩阵,其间距为4: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 分析问题 C++没有定义任何用于执行输入或输出的语句,但可以使用C语言中的标准I/O函数printf()和scanf()来解决此问题。 【例】有如下程序: #include stdio.h int b=20; float a=5.6; int main() { printf(%d\n,a); scanf(%d,a); scanf(%d,b); printf(%d\n,abc); return 0; } printf()与scanf()存在以下两个缺点: 1.非类型安全 2.不可扩充性 class A{…} A a; … printf(%?,a); //不知用什么格式符来识别A的对象 C++用I/O流来解决这个问题。 下面先介绍流的概念。 流的概念 在C++程序中,数据可以从外部设备(键盘等)流入到计算机内存中,也可以从计算机内存流向外部设备(屏幕或磁盘文件等),这种数据传递被称作输入输出。 C++将数据从一个位置到另一个位置的传递抽象为流。所谓流(stream)就是指数据从一个位置流向另一个位置。流是字节的序列。 C++的输入输出操作是基于流来处理的。 I/O流操作 C++基于流的概念处理数据的输入输出,因此也称之为输入输出流,即I/O流。 I/O流具有两个基本的行为特征,一是从流中获取数据的操作称为提取操作,二是向流中添加数据的操作称为插入操作。 I/O流类 C++标准库围绕流的概念,提供了一整套I/O流类簇,既可用于标准类型数据的I/O,也能用于自定义类型对象的I/O,这种扩展性是C++最有价值的特点之一。 C++标准库提供的I/O流类的各种操作都是类型安全(type safe)的。不同类型的I/O流操作都是重载的,没有定义过I/O功能的类型不具备I/O操作的能力。 I/O流类簇的层次结构 C++标准库提供的I/O流类簇有两个平行基类: streambuf(filebuf,stringbuf,strstreambuf) ios(istream,ostream) ios类有下面直接派生类: 输入流类istream (ifstream,istringstream,istrstream) 输出流类ostream (ofstream,ostringstream,ostrstream) (iostream-fstream,stringstream,strstream) I/O流分类 C++标准库提供的I/O流按功能可分为如下3类: 标准I/O流:内存与标准输入输出设备(键盘、屏幕)之间数据的传递; 文件I/O流:内存与外部磁盘文件之间数据的传递; 字符串I/O流:内存变量与表示字符串流的字符数组之间数据的传递。 标准I/O流对象 标准I/O流预定义了4个流类对象:cin、cout、cerr、clog。 操作系统给把外设用文件名的方式进行管理,因此程序设计要访问外设就跟访问文件一样方便。 I/O分为无格式支持的低级I/O和具有格式支持的高级I/O。 无格式支持的低级I/O以基本字节为操作对象,有格式支持的高级I/O把若干字节组合成有意义的单位,如整数、浮点数、字符、字符串及用户自定义类型等等。 无格式输入/输出 无格式输入/输出就是按系统预定义的格式进行的输入/输出。 按默认约定,每个C++程序都能使用标准I/O流,如标准输入、标准输出。 cin用来处理标准输入,即键盘输入;cout用来处理标准输出,即屏幕输出。它们被定义在iostream头文件中。 在使用cout和cin前,要用编译预处理命令将所使用的头文件包含到源程序中,其格式如下: #include iostream 无格式输出 “”是预定义的插入运算符,作用在流类对象cout上,实现默认格式的屏幕输出。使用cout输出表达式值到屏幕上的格式如下: coutE1E2…Em; 其中,E1、E2、…、Em为均为表达式。功能是计算各表达式的值,并将结果输出到屏幕当前光标位置处。 无格式输出 cout是ostream流类的对象,它在iostream头文件中作为全局对象定义,其格式如下: ostream cout(stdout); 其中,stdout表示标准输出设备名(屏幕)。 在ost
您可能关注的文档
- 高三复习公开课_课题:测量电源电动势和内阻23.ppt
- 高三复习铝及其重要化合物.ppt
- 马丁仪表介绍.ppt
- 马克思主义基本原理概论复习考点归纳.docx
- 锚杆支护培训教案 (自动保存的).doc
- 高三高考冲刺家长会.ppt
- 高三金属元素复习.doc
- 面板线操作知识培训.ppt
- 高三练习讲评.ppt
- 高三平面向量.doc
- 2026及未来5年中国电磁铁行业市场发展监测及投资战略咨询报告.docx
- 2026及未来5年中国建筑工程机械行业市场发展监测及投资战略规划报告.docx
- 2026及未来5年中国硫化镍行业市场调研分析及投资战略规划报告.docx
- 2026及未来5年中国烷化剂市场运营态势及发展前景预测报告.docx
- 2026年涤纶细旦长丝项目可行性研究报告(市场数据调查、监测研究).docx
- 2026年弓型虫抗体试剂项目可行性研究报告(市场数据调查、监测研究).docx
- 2026年拖链系统用高柔性数据传输电缆项目可行性研究报告(市场数据调查、监测研究).docx
- 2025年中国水晶圆盘市场调查研究报告.docx
- 2025年中国长网双辊挤浆机市场调查研究报告.docx
- 2026年及未来5年内中国液体氩气行业投资前景及策略咨询研究报告.docx
最近下载
- 《影视视听语言》第四版 07189 第六、七、八、九章.pptx VIP
- 声带息肉手术患者护理查房.pptx VIP
- 《影视视听语言》第四版 07189第五章.pptx VIP
- 《影视视听语言》第四版 07189第三章.pptx VIP
- 《影视视听语言》第四版 07189 第一章课件.pptx VIP
- 高一地理自然地理环境的差异性.pptx VIP
- 《影视视听语言》第四版 07189 第二章.pptx VIP
- 2026年南宁职业技术学院单招职业适应性考试模拟测试卷附答案解析.docx VIP
- 高中地理 人教版 选修一《自然环境的整体性与差异性》自然环境的整体性 课件.pptx VIP
- 健康证考试题及答案.docx VIP
原创力文档

文档评论(0)