IO对象无拷贝或赋值。进行IO操作的函数通常以引用的方式传递和返回流,且该引用不能是const的

确定一个流对象是否处于良好状态的最简单的方法是将它作为一个条件来使用

while (cin >> word)//只有当按下回车才会开始读取输入流,然后依次处理流中的数据,处理完之后(如果流中没有错误数据或文件结束标识),等待下次流的输入,按下回车后读取流,直到遇到错误数据或文件结束标识则结束cin流。



        流的状态就像汇编里的标志寄存器,用给特定的二进制位置位来反馈对应状态。

        如果到达文件结束或流读取结束位置,eofbit和failbit都会被置位,badbit、eofbit、failbit被置位时,failbit都会被置位。

badbit表示系统及错误,如不可回复的读写错误。通常情况下,一旦badbit被置位,流就无法使用了。在发生可恢复错误后,failbit被置位,如期望读取熟知却读取出一个字符等错误。

goodbit在所有错误位均未置位时返回true.若到达文件末尾,即使将流标志位全部复位,也不能再输出数据。

cin.clear(cin.rdstate() & ~cin.failbit & ~cin.badbit);//将failbit和badbit复位,但保持eofbit不变。 Cin.rdstate()表示当前流的标志位状态,~failbit表示将cin流的badbit位置0,其他位均值1,~cin.failbit表示将cin流的failbit 位置0,其他位置1,将三者按位取与,即可达到预期的效果。(cin.failbit表示将cin流的failbit位置1,其他位置0)

cin.ignore(100,'\n')

• 作用是把你“按回车“之前的输入从缓冲区内清除,保证对下次的Cin没影响。忽略回车前的前100个字符,从上一次流的读取位置开始算。

• 或者大于100个字符的输入也被清除。

刷新缓冲区就是数据真正写到输出设备或文件

刷新条件:缓冲区满了,endl,flush, ends, unitbuf等操作符

 endl换行后刷新缓冲区,flush刷新缓缓冲区,ends输出一个空格后刷新缓冲区。

unitbuf在每次输出操作后都进行一次flush刷新,而nounitbuf则恢复正常的缓冲区刷新机制。Cout << unitbuf; cout << nounitbuf;

如果程序异常终止,输出缓冲区是不会被刷新的。

当一个输入流被关联到一个输出流时,任何试图从输入流读取数据的操作都会先刷新关联的输出流。标准库将cout和cin关联在一起,因此下面语句:cin >> ival导致cout的缓冲区被刷新,也就是当前输入缓冲区内所有内容都将被输出。

8.1.1 IO的更多相关文章

  1. VS2015编译GEOS

    下载链接:http://trac.osgeo.org/geos/ 1. 打开cmake,加载geos源码和定位geos的工程存放位置: 2.点击configure,会报错,首先设置CMAKE_INST ...

  2. 高性能IO模型浅析

    高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking  ...

  3. 深究标准IO的缓存

    前言 在最近看了APUE的标准IO部分之后感觉对标准IO的缓存太模糊,没有搞明白,APUE中关于缓存的部分一笔带过,没有深究缓存的实现原理,这样一本被吹上天的书为什么不讲透彻呢?今天早上爬起来赶紧找了 ...

  4. [APUE]标准IO库(下)

    一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...

  5. [APUE]标准IO库(上)

    一.流和FILE对象 系统IO都是针对文件描述符,当打开一个文件时,即返回一个文件描述符,然后用该文件描述符来进行下面的操作,而对于标准IO库,它们的操作则是围绕流(stream)进行的. 当打开一个 ...

  6. [.NET] 利用 async & await 进行异步 IO 操作

    利用 async & await 进行异步 IO 操作 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6082673.html  序 上次,博主 ...

  7. [原] KVM 虚拟化原理探究(6)— 块设备IO虚拟化

    KVM 虚拟化原理探究(6)- 块设备IO虚拟化 标签(空格分隔): KVM [toc] 块设备IO虚拟化简介 上一篇文章讲到了网络IO虚拟化,作为另外一个重要的虚拟化资源,块设备IO的虚拟化也是同样 ...

  8. [原] KVM 虚拟化原理探究(5)— 网络IO虚拟化

    KVM 虚拟化原理探究(5)- 网络IO虚拟化 标签(空格分隔): KVM IO 虚拟化简介 前面的文章介绍了KVM的启动过程,CPU虚拟化,内存虚拟化原理.作为一个完整的风诺依曼计算机系统,必然有输 ...

  9. Performance Monitor4:监控SQL Server的IO性能

    SQL Server的IO性能受到物理Disk的IO延迟和SQL Server内部执行的IO操作的影响.在监控Disk性能时,最主要的度量值(metric)是IO延迟,IO延迟是指从Applicati ...

  10. java.IO输入输出流:过滤流:buffer流和data流

    java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? ...

随机推荐

  1. 提取 Microsoft.ReportViewer等dll

    ReportViewer 在开发环境没问题 发布以后可能会提示找不到 Microsoft.ReportViewer 下的几个dll 可以用用下面脚本在开发服务器上提取 相应的dll @SET dest ...

  2. dcloud_base连接失败(root:admin123!@#qwe@tcp(192.168.8.205:3306)/dcloud_base) Error 1129: Host '192.168.8.205' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

    mysql -uroot -p admin123!@#qwe show global variables like '%max_connect_errors%'; set global max_con ...

  3. linux100讲——80 系统函数库介绍

    1.系统自建了函数库,可以在脚本中引用 /etc/init.d/functions 2.自建函数库 使用 source 函数脚本文件 “导入”函数 3. vim /etc/init.d/functio ...

  4. 51 nod 1212 无向图最小生成树

    http://www.51nod.com/Challenge/Problem.html#problemId=1212 代码 #include<bits/stdc++.h> using na ...

  5. HDU-1506 Largest Rectangle in a Histogram【单调栈】

    Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base l ...

  6. Vue ui创建项目

    vue-cli 3.0 版本为我们提供了集 创建.管理.分析 为一体的可视化界面vue UI,一个可视化项目管理器 一.打开终端,安装最新vue-cli npm install -g @vue/cli ...

  7. 关于Oracle内存分配-解决实际运行时最大Session数不一致远小于系统配置最大的Session数目

    一.相关的技术准备 1. 关于内存的介绍:https://blog.csdn.net/u013641333/article/details/82732526 2. PGA_AGGREGATE_TARG ...

  8. BK: Data mining

    data ------> knowledge Are all patterns interesting? No. only a small fraction of the patterns po ...

  9. 《JavaScript ES6 函数式编程入门经典》--推荐指数⭐⭐⭐

    这本书比较基础认真看完再自己写点demo一个双休日就差不多, 总体来说看完还是有收获的,会激起一些你对函数编程的兴趣 主要目录如下: 第1章 函数式编程简介 11.1 什么是函数式编程?为何它重要 1 ...

  10. 题解 AT4170 【[ABC103A] Task Scheduling Problem】

    翻译 有 \(3\) 个正整数 \(a\).\(b\).\(c\),请你输出这 \(3\) 个数中的最大值 \(-\) 最小值的差. 分析 求最大值 \(-\) 最小值的差,我们自然可以使用 for ...