c++ 流基本概念
前言
在程序经常实现数据的输入和输出,c++通过一种称为流(stream)的机制提供了更为精良的输入和输出方法。流是一种灵活且面向对象的I/o方法。
根据操作对象不同分为文件流、字符串流、控制台流。
控制台流
我们所熟悉的输入输出操作分别是由istream(输入流)和ostream(输出流)这两个类提供的,为了允许双向的输入/输出,由istream和ostream派生出了iostream类。
类的继承关系如下图:
是一种多继承的关系,在程序应用可以只包含头文件iostream。
| 函数 | 功能 | 应用 | 操作符 |
|---|---|---|---|
| cin | 输入(standard input)的istream类对象 | 从设备读入数据 |
|
| cout | 输出(standard output)的ostream类对象 | 向设备输出或者写数据 | << |
| cerr | 标准错误(standard error)的ostream类对象 | 屏幕设备写数据 | << |
上面的<<和>>操作符,是因为iostream.h头文件中,ostream类对应每个基本数据类型都有其友元函数对左移操作符进行了友元函数的重载。
文件流
文件流的输入输出类在fstream头文件被定义,和上面继承关系为:
由于文件设备不像显示器屏幕和键盘那样标准的默认设备,所以我们定义一个流对象。
ofstream类的默认构造函数原形为:
ofstream::ofstream(constchar *filename,int mode = ios::out, int penprot = filebuf::openprot);
| 参数 | 值来源 |
|---|---|
| filename | 打开的文件名 |
| mode | 打开文件的模式(ios:out) |
| prot | 打开文件属性(filebuf::openprot) |
- mode属性表
| 类型 | 解释 |
|---|---|
| ios::app | 追加方式打开文件 |
| ios::ate | 文件打开后定位到文件尾,app就包含有此属性 |
| ios::binary | 以二进制方式打开文件,缺省的方式是文本方式 |
| ios::in | 文件以输入方式打开 (ifstream) |
| ios::out | 文件以输出方式打开 (ofstream) |
| ios::nocreate | 不建立文件,所以文件不存在时打开失败 |
| ios::noreplace | 不覆盖文件,打开文件时如果文件存在失败 |
- 打开文件属性值
| 类型 | 解释 |
|---|---|
| 0 | 普通文件,打开访问 |
| 1 | 只读文件 |
| 2 | 隐含文件 |
| 4 | 系统文件 |
“或”或者“+”把以上属性连接起来,如3或1|2就是以只读和隐含属性打开文件。 文件使用完后可以使用close成员函数关闭文件。
ios::app为追加模式,在使用追加模式的时候同时进行文件状态的判断是一个比较好的习惯。
字符串流
理解就是能够控制字符串类型对象进行输入输出的类,C++不光可以支持C++风格的字符串流控制,还可以支持C风格的字符串流控制。
继承关系如下图:
| 类 | 作用 |
|---|---|
| istrstream | C风格的串流的输入操作,字符串数组作为输入。 |
| ostrstream | C风格的串流的输出操作,字符串数组作为输出。 |
| strstream | 支持C风格的串流的输入输出操作。 |
版权声明:本文为博主原创文章,未经博主允许不得转载。
c++ 流基本概念的更多相关文章
- Java IO 理解流的概念
Java IO 理解流的概念 @author ixenos 在理解流时首先理解以下概念 1.流的来源和去向一般在构造器指出 2.方法中的形参一般是将流输出到某个位置,读取(INPUT)流从流读出数据( ...
- 09-JS的事件流的概念(重点)
在学习jQuery的事件之前,大家必须要对JS的事件有所了解.看下文 事件的概念 HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件.页面的滚动事件onscroll等等,可以 ...
- 前端 ----js的事件流的概念(重要)
09-JS的事件流的概念(重点) 在学习jQuery的事件之前,大家必须要对JS的事件有所了解.看下文 事件的概念 HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件.页 ...
- JS的事件流的概念(重点)
09-JS的事件流的概念(重点) 在学习jQuery的事件之前,大家必须要对JS的事件有所了解.看下文 事件的概念 HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件 ...
- python 全栈开发,Day55(jQuery的位置信息,JS的事件流的概念(重点),事件对象,jQuery的事件绑定和解绑,事件委托(事件代理))
一.jQuery的位置信息 jQuery的位置信息跟JS的client系列.offset系列.scroll系列封装好的一些简便api. 一.宽度和高度 获取宽度 .width() 描述:为匹配的元素集 ...
- OTL翻译(2) -- OTL流的概念
OTL流的概念 任何的SQL语句.SQL语句块或存储过程,都是通过输入与输出变量进行处理参数与结果的. 如: 例1:一个SELECT语句把标量的输入变量作为WHERE子句部分的条件:同时SELECT部 ...
- JS的事件流的概念
事件的概念: HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件.页面的滚动事件onscroll等等,可以向文档或者文档中的元素添加事件侦听器来预订事件.想要知道这些事件是在 ...
- 09-----JS事件流的概念(重点)
在学习jQuery的事件之前,大家必须要对JS的事件有所了解.看下文 时间的概念 HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件.页面的滚动事件onscroll等等,可以 ...
- jQuery 事件流的概念
jQuery 事件流的概念 什么是事件流 DOM事件流 1. 事件捕获阶段; 2.处于目标阶段; 3.事件冒泡阶段; <!DOCTYPE html> <html lang=&quo ...
- 08 JS的事件流的概念(重点)
在学习jQuery的事件之前,大家必须要对JS的事件有所了解.看下文 事件的概念 HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件.页面的滚动事件onscroll等等,可以 ...
随机推荐
- SGU 296.Sasha vs. Kate(贪心)
题意: 给出长度为n(<=1000)的一个数.输出删掉k个数字后的最大值. Solution: 简单贪心. s[i]代表数字s的第i位. 从前往后第一个满足s[i]>s[i-1]的位置,最 ...
- mysql 刘道成视频教程 第4-8课 --- 数据类型
数据类型大纲图: 注:在mysql中,输入时,除了数值型,不要加单引号,其他的都要加上单引号,养成一种好习惯. 一.数值型: 整数型: 1)从数学上来讨论tinyint 1. 占据空间 2.存储范围 ...
- ecshop 报错
ECShop出现Strict Standards: Only variables should be passed b (2014-06-04 17:00:37) 转载▼ 标签: ecshop 报错 ...
- STM32随记
定时器(Timer): 分为高级,通用,基本三种. M3:8个 高级:TIM1,TM8 通用:TIM2~TIM5 基本:TIM6,TIM7 M0:8个 高级:TIM1 通用:TIM2,TIM3,TIM ...
- iOS: 学习笔记, 透过Boolean看Swift(译自: https://developer.apple.com/swift/blog/ Aug 5, 2014 Boolean)
透过Boolean看Swift 一个简单的Bool类型内部就包含了许多Swift主要功能, 如何构建一个简单类型是有趣的演示. 本文将创建一个与Bool类型在设计与实现上非常相似的新MyBool类型. ...
- For Aisha(阿伊莎)
相见时难别亦难,东风无力百花残.by:昂思多,20160524 跟你在一起,没有拘束感,完全就像是在跟亲人对话. 很喜欢这种感觉 虽然才认识不到10天,却就像是认识了好几年的老朋友 真的喜欢叫你“阿伊 ...
- Java语言基础(一) 标识符
Java标识符的问题: ①不可以以数字开头 int 123number = 0; //错误 ②可以使用任意的货币符号(¥和$等等)中文也可以 int $i = 0; //正确 int ¥i = 1; ...
- WINDOWS+L组合键锁定XP
在Windows XP时工作时,我们经常要锁定计算机,当计算机被锁定后,只有重新登录才能够使用计算机,从而保证了计算机的安全. WINDOWS+L组合键锁定XP,就是键盘上右边的小窗口+L键 ,可以快 ...
- Spring Batch系列总括(转载)
最近一个项目在使用SpringBatch框架做一个电子商务平台的批处理.网上资料很有限,尤其是中文资料更是少之又少,官网上的文档也只是讲一些入门的基础知识,大部分高级特性都是一笔带过,讲解的很不彻底, ...
- Java System类看到的一点小记
System类 位置java.lang包中 是final类,不能被继承,不能被修改 ,不能被实例化 private System(){}私有的构造函数,不允许被其他对象进行实例化 public fin ...