- 1、本文档共149页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章C的IO流库_首都师范大学
第八章 C++ 的 I/O 流库;C++ 为什麽要建立自己的输入输出系统?
1 C 虽然具有一个灵活和功能强大的输入输出系统,
但它并不支持自定义类型。例如:
class account
{
char name[30];
double balance;
public:
account();
account(char*, double);
…
};; …
account acnt;
scanf(“%account”, acnt); // 错误,不支持 account 类型
account acnt1(John, 3000.0);
printf(“%account”, acnt1); // 错误,不支持 account 类型
…
因为输入函数 scanf 和输出函数 printf 的格式串形参
只能与系统预定义类型匹配,而无法识别用户的自
定义类型,并且也不能通过重载定义 scanf 和 printf
函数的新版本,使它们的格式串形参能匹配任意用
户自定义类型。;2 面向对象程序设计必须定义众多的用户自定义类,
如何以面向对象的设计原则和方法为自定义类设计
既规格统一,又??应个性化的输入输出操作行为是
十分必要的。因此 C++ 必须建立一个能通过对输入
输出操作重载的方法实现对任意自定义类型对象输
入输出支持的系统。;本章要点
1 C++ 流库结构
流库的概念、流库的组成。
2 标准输入输出流
输入输出流类的定义、输入输出运算符、输入输出
的格式控制。
3 自定义类的输入输出
输入输出运算符的重载。
4 文件的输入输出流
文件的打开、关闭和读写。
5 使用 MFC 的对话框类实现输入输出;8.1 C++ 流库结构
8.1.1 流库的概念
流(stream)是从源(数据的生产者)到目标(数
据的使用者)被传输数据的引用。每个流都是一个与
某种数据传输设备相关联的对象。
流具有方向性:
输入流是与输入设备(如键盘)关联的流。
输出流是与输出设备(如显示器屏幕)关联的流。
输入输出流是与输入输出设备(如磁盘)关联的流。;C++ 中包含的预定义流:
cin 输入流,与输入设备关联。
cout 输出流,与输出设备关联。
cerr 非缓冲型错误信息流,与错误输出设备关联;
clog 缓冲型错误信息流,与错误输出设备关联。
在缺省情况下,指定的输入设备是控制台键盘,输
出设备是控制台显示器终端。在任何情况下,指定的
错误输出设备总是控制台显示器终端。; cin 和 cout 的使用方法我们已经很熟悉了。cerr 和
clog 均是用来输出错误信息,它们的使用方法与 cout
基本相同,只不过它们所关联的设备始终是控制台显
示器,而不随着 cout 关联设备的改变而变化。cerr 和
clog 之间的区别是:
cerr 对输出的错误信息不缓冲,因而发送给它的任何内
容都立即输出。
clog 输出的错误信息被缓冲,当缓冲区满时才进行输
出,也可以通过刷新流的方式(遇到操纵符 endl
或 flush)强迫刷新缓冲区导致显示输出。; 下面给出一段使用预定义输入输出流信息的程序:
cout What was the total dollar amount of last month’s sales?;
cin sales;
cout How many units did you sell?;
cin num;
if (num == 0)
{ cerr The average can not be computed.\n; }
else
{
avgsales = sales / num;
cout The average selling price per nuit was ;
cout avgsales \n;
}; C++ 流库是用面向对象的设计方法建立起来的输入
输出类库,它具有两个平行的根基类 streambuf 和 ios,
库中所有其他的类均从它们直接或间接派生。系统中
预定义流,cin、cout、cerr、clog 都是流库中相应类的
对象。;8.1.2 streambuf 类
· streambuf 类是流库的根基类,它为输入输出物理设
备提供缓冲区和流处理的一些通用方法。
· C++ 将输入输出流均视为字节流,因此缓冲区是由
一个字符串和两个指针组成的。这两个指针分别指
向数据流在输入缓冲区中的插入位置和在输出缓冲
区的提取位置。
您可能关注的文档
- 第一篇汽车故障诊断检测概述.ppt
- 第一章计算机基础知识2011级.ppt
- 第一章计算机基础知识内容回顾.ppt
- 第一节PowerPoint的使用-主要功能.ppt
- 第一章运营管理概述.ppt
- 第一章集装箱运输绪论.ppt
- 第一篇第二章节水污染治理基本方法厌烦氧1.ppt
- 第一章节过程操纵基本概念.ppt
- 第一节信息-特征.ppt
- 第一节向量-其线运算.pptx
- 2025年中山市沙溪镇人民政府所属事业单位招聘11人笔试备考题库及参考答案详解一套.docx
- 2025年中山市横栏镇人民政府所属事业单位第二期招聘笔试高频难、易错点备考题库及参考答案详解一套.docx
- 2025年中山市横栏镇人民政府所属事业单位第二期招聘笔试高频难、易错点备考题库含答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库及完整答案详解1套.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库参考答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库及答案详解一套.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库及完整答案详解1套.docx
文档评论(0)