没有合适的资源?快使用搜索试试~ 我知道了~
c++标准库简介(数据流)
7 下载量 178 浏览量
2010-10-26
13:39:25
上传
评论
收藏 104KB DOC 举报
温馨提示
试读
14页
c++标准库简介,数据流,iostream,fstream,strstream
资源推荐
资源详情
资源评论
为什么需要 iostream
我们从一开始就一直在利用 的输入输出在做着各种练习,输入输出是由
库提供的,所以讨论此标准库是有必要的,它与 语言的 库
不同,它从一开始就是用多重继承与虚拟继承实现的面向对象的层次结构,作
为一个 的标准库组件提供给程序员使用。
为内置类型类型对象提供了输入输出支持,同时也支持文件的
输入输出,类的设计者可以通过对 库的扩展,来支持自定义类型的
输入输出操作。
为什么说要扩展才能提供支持呢?我们来一个示例。
!"#$$$"%%不明确的输出格式
!"#$$$"%%不明确的输入格式
&&&&%%同样不够明确
''%%同样不够明确
(""
由于自定义类的特殊性,在上面的代码中,无论你使用 风格的输入输
出,或者是 的输入输出都不是不明确的一个表示,由于 语言没有运算符
重载机制,导致 库的不可扩充性,让我们无法让 !和 !支持
对自定义类对象的扩充识别,而 是可以通过运算符重载机制扩充
库的,使系统能能够识别自定义类型,从而让输入输出明确的知道
他们该干什么,格式是什么。
在上例中我们之所以用 ! 与 进行对比目的是为了告诉大家,
与 处理输入输出的根本不同,我们从 远的输入输出可以很明显看出是
函数调用方式,而 的则是对象模式, 和 是 类和
类的对象。
1 iostream: istream 和 ostream
中的 库主要包含下图所示的几个头文件
IOSstream 库
!
!)
!
我们所熟悉的输入输出操作分别是由 输入流和 输出
流这两个类提供的,为了允许双向的输入/输出,由 和 派
生出了 类。
类的继承关系见下图:
库定义了以下三个标准流对象:
* ,表示标准输入的 类对象。 使我们可
以从设备读如数据。
+* ,表示标准输出的 类对象。 使
我们可以向设备输出或者写数据。
,* ,表示标准错误的 类对象。 是导
出程序错误消息的地方,它只能允许向屏幕设备写数据。
输出主要由重载的左移操作符(&&)来完成,输入主要由重载的右移操
作符''完成
* '' 表示将数据放入 对象中。
+* && 表示将 对象中存储的数据拿出。
这些标准的流对象都有默认的所对应的设备,见下表:
C++ 对象
名
设备名称
C
中标准设备
名
默认含义
键盘
标准输入
显示器屏幕
标准输出
显示器屏幕
标准错误输出
上表中的意思表明 对象的默认输入设备是键盘, 对象的默认输出
设备是显示器屏幕。
那么原理上C有是如何利用 / 对象与左移和右移运算符重载
来实现输入输出的呢?
下面我们以输出为例,说明其实现原理:
* 是 类的对象,因为它所指向的是标准设备(显示器屏
幕),所以它在 头文件中作为全局对象进行定义。
+* %%其默认指向的 中的标准设备名,作为其构
造函数的参数使用。
,* 在 *- 头文件中, 类对应每个基本数据类型都有其友
元函数对左移操作符进行了友元函数的重载。
o .&&.
o .&&.-/
o ***等等
一句输出语句:&&")))*01*";,事实上调用的就是
.&&.-/这个运算符重载函
数,由于返回的是流对象的引用,引用可以作为左值使用,所以当程序中有类
似 &&")))*01*"&&"中国软件开发实验室"这样的语句出
现的时候,就能够构成连续输出。
由于 库不光支持对象的输入输出,同时也支持文件流的输入输
出,所以在详细讲解左移与右移运算符重载只前,我们有必要先对文件的输入
输出以及输入输出的控制符有所了解。
2 fstream: ifstream 和 ofstream
和文件有关系的输入输出类主要在 !*- 这个头文件中被定义,在这
个头文件中主要被定义了三个类,由这三个类控制对文件的各种输入输出操
作,他们分别是 !、!、!,其中 ! 类是由
类派生而来,他们之间的继承关系见下图所示。
剩余13页未读,继续阅读
资源评论
xiaoyaoxiaoxie
- 粉丝: 2
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 前端开发-什么是前端开发-关于前端开发的一些相关介绍
- Sora AI-关于文生视频的使用场景说明
- suno AI文生视频的相关教程和介绍使用
- 什么是后端开发-关于后端开发的一些小介绍分享
- Jurassic Pack Vol. II Dinosaurs 侏罗纪包卷恐龙二号Unity游戏模型资源unitypackage
- Jurassic Pack Vol. III Dinosaurs 侏罗纪包卷恐龙三号Unity游戏模型资源unitypackag
- Ultimate Seating Controller 终极座椅控制器Unity游戏开发插件资源unitypackage
- 什么是人工智能-关于人工智能的相关介绍说明
- Figma Converter for Unity适用Unity的Figma转换器Unity游戏开发插件unitypackage
- Creepy Animatronic Anims 令人毛骨悚然的电子动画Unity游戏动画插件资源unitypackage
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功