C++作为一种面向对象的语言,处理输入和输出都是通过一系列定义在标准库的类来完成的。IO库可以读写内置类型,用户也可以通过定义自己的IO操作,读取自己专属的IO操作。C++处理IO的主要思想是“流”,数据和水流一样,写入和读出。
一、IO类有那些?最常见的流是关联到控制台的,用户的所有操作(键盘输入、屏幕显示)都是在这样的流中完成的,没错他就是标准输入输出(iostream),另外一个常见的流就是文件流(fstream),输入输出操作都是关联到文件的,最后一个就是字符串流(sstream),这样的流一般用于程序,流方式处理有时候会有意想不到的用处。
总结一下,IO类可以分为:
- iostream
- fstream
- sstream
C++对上述三种流对象处理非常统一,主要得益于继承机制。fstream和sstream都是继承于iostream的,所以你怎么使用iostream,你就能怎么使用fstream和sstream。每个进程都将会打开三个文件描述符,分别是标准输入流,标准输出流和标准错误流,通常,标准输入是键盘设备、标准输出流和错误输出流是显示器设备文件。
C++预定了一些流对象实例:
使用一个IO难免会遇到错误,根据严重程度可分为可恢复和不可恢复错误。IO类定义了一些列函数和标志,帮助我们管理和查询流的条件状态(condition state)。
每一个流设备都定义了条件状态,也就是与机器无关的strm::iostate,它包含以下方面的状态:
- strm::badbit
- strm::failbit
- strm::eofbit
- strm::goodbit
可以通过strm.setstate来设置这些位。如下,我们先通过rdstate()读出此时流条件状态,再用位操作将其复位:
cin.clear(cin.rdstate()&~cin.failbit&~cin.badbit);
下面是这些状态在几种情况的条件状态情况:
情况状态可恢复性系统级错误badbit置位否类型不匹配错误failbit置位是文件结束eofbit和failbit均置位?没有错误goodbit为0/将一个流作为判断条件,其实就是判断badbit failbit eofbit是否被置位,条件状态将会被转换成false,表示流状态检测失败;反之一切正常,将会返回true。
一般的定义是复位使输出从1回到0;置位使输出从0变为1
三、输出流缓冲管理每一个输出流都管理一个缓冲区,用户保存程序读写的数据。
os
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?