C程序设计流类库与输入输出概要1
C++程序设计流类库与输入/输出 C++的基本流体系 文件流 * * 流 输入/输出(I/O): 输入:从某处接受一个序列,并将其转换为对象所要求的格式赋给对象; 输出:将一个对象转换为一个序列传送到另一个地方; 源:输入数据来自的地方称为源; 目标:接收输出数据的地方称为目的; 流(stream) 流:在程序员与被使用的设备之间的抽象界面称为流。 逻辑设备:所有外部设备的总称;对逻辑设备而言只有两类基本操作: (1)从逻辑设备上读取数据, (2)将数据写入逻辑设备。 文本流: 由一串ASCII字符所组织的数据流。如源程序文件,word文件。这种文本流可以直接输出到显示器或送到打印机。 二进制流: 将数据以二进制形式存放,在数据传输时不进行任何变换。 使用流类库来完成输入/输出,比使用传统语言中的库函数至少有两个方面的优点(1)流具有严格的类型检查机制,可减少因使用不当而引起的程序错误;(2)流是面向对象的,可以利用类的继承和多态性,给用户提供统一的接口,因而使用较少的成员函数就能实现更多的功能。 9.1 C++的基本流类体系 C++中输入/输出的基本流类体系: 是一个派生类体系,以抽象类ios为基类。 ios (虚基类) istream ostream streambuf filebuf iostream ios(streambuf*) public public public 说明: streambuf不是ios类的派生类,只是类ios中的一个streambuf类对象的指针,用来管理一个流的缓冲区。 类ios是类istream和ostream的虚基类,提供对流进行格式化输入输出操作和错误处理的成员函数; 类istream和ostream由ios公有派生, istream提供完成输入操作的成员函数, ostream提供完成输出操作的成员函数; iostream由istream和ostream由公有派生,不提供新的成员函数,只将两类的成员函数组合支持流实现完整的输入和输出操作; ifstream ofstream fstream ios (虚基类) istream ostream streambuf filebuf iostream ios(streambuf*) public public public cin…… ……..cout,cerr,clog public public public C++的输入输出流类库中定义了四个流:cin,cout,cerr,clog; (1)cin是istream的公有派生类istream_withassing的对象;所对应的物理设备为键盘,实现从键盘输入数据; (2)out,cerr,clog是类ostream的公有派生类ostream_withassign的对象;所对应的物理设备为显示器,实现将信息输出到显示器; 因此,流实际就是输入输出类的对象。 其中cin、cout和clog是带缓冲区的,缓冲区由streambuf类对象来管理。而cerr为非缓冲区流,一旦错误发生立即显示。 9.3 标准设备的输入/输出 #includeiostream.h void main(void) { cerr输入i的值:; int i; cini; clogi*i=i*i\n; } 说明:通常情况下可以用cerr,clog代替cout。但流cout允许输出重定向,而cerr,clog不允许。 例9.1 使用流cerr和clog实现数据的输出 缓冲区 系统在主存中开辟的一个专用区域,用来临时存放输入和输出信息,如先将源输入的信息送到该区域,然后从该区域中取出数据。这种区域就称为缓冲区。 我们已经知道,在C++中除cerr是非缓冲流外,cin,cout和clog都是缓冲流。 (1)缓冲的输出流cout,clog,仅当输出缓冲区満时,才将缓冲区中的信息输出。 (2)输入缓冲流cin,仅当输入一行后,才开始从缓冲区中取数据。 当希望把输出信息送到缓冲区后立即输出时,必须强制刷新(flush)输出流,要求系统立即将缓冲区中的输出信息送到与流相联系的设备上输出。 例9.2 输出的信息在显示器上不显示 #includeiostream.h #includeiomanip.h void main(void){ double num=-234567987; coutnum=num\n; coutsetprecision(10)num=num\n; //A // cout.precision(10); int *p; *p=34567; cout*p\n; delete p; } 为将缓冲区中的信息显示出来,必须将A行改
您可能关注的文档
- BusinessObjects XI 管理(公司内部资料)概要1.ppt
- Business_appointment_商务会谈概要1.ppt
- But what`s a dictionary for? 课概要1.pptx
- Butterknife用法概要1.doc
- But you didn’t概要1.pptx
- Business Etiquette(商务礼仪2014)概要1.pptx
- BWDSP汇编入门概要1.pptx
- buzz marketing概要1.ppt
- byron she walks in beauty 美与媚概要1.ppt
- Business travel概要1.pptx
- 2025年全国演出经纪人员资格认定考试试卷带答案(研优卷).docx
- 2025年全国演出经纪人员资格认定考试试卷完整版.docx
- 2025年全国演出经纪人员资格认定考试试题库及完整答案.docx
- 2025年全国演出经纪人员资格认定考试试卷完美版.docx
- 2025年全国演出经纪人员资格认定考试试卷含答案(实用).docx
- 2025年全国演出经纪人员资格认定考试试卷及答案(各地真题).docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
- 2025年全国演出经纪人员资格认定考试试卷及答案1套.docx
- 2025年下半年四川成都市郫都区面向社会引进公共类事业单位人员2人备考题库最新.docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
最近下载
- 西方经济学-马工重点教材-第1章.ppt VIP
- nex-6使用说明书手册.pdf
- 西方经济学-马工程重点教材-第3章.ppt VIP
- 西方经济学-马工重点教材-第2章.ppt VIP
- 2025年安徽省公务员考试法律专业试卷(真题及答案) .pdf VIP
- 2025台州三门县国有企业公开招聘工作人员33人笔试参考试题附答案解析.docx VIP
- 电力系统优化与调度软件:AIMMS二次开发_(3).AIMMS中的数学优化理论.docx VIP
- 《中国黄金集团内蒙古矿业有限公司较大坠落事故调查报告》公布.docx VIP
- 市政工程施工组织设计(范本).doc VIP
- 能源优化建模:AIMMS二次开发_(2).AIMMS基础与高级编程.docx VIP
原创力文档

文档评论(0)