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. [PAT] A1021 Deepest Root

    [题目大意] 给出n个结点和n-1条边,问它们能否形成一棵n个结点的树,如果能,从中选出结点作为树根,使整棵树的高度最大.输出所有满足要求的可以作为树根的结点. [思路] 方法一:模拟. 1 连通.边 ...

  2. 0008 基于DRF框架开发(01 DRF开发的基本流程)

    1 创建模型 由于之前在<004 工程配置>中,已在Applications/Organizations/models中创建了一个UserInfo模型.此处引用这个模型. from dja ...

  3. Spring学习-依赖注入

    Spring是基于IOC与AOP的框架,而其中的IOC(Inversion of Control)即反转控制是Spring的基础. 在以前学过的知识中,一个新的对象全部为自己手动new出来的,而在Sp ...

  4. 2.Docker Compose 部署应用程序

    部署 Tomcat version: '3.1' services:  tomcat:   restart: always   image: tomcat   container_name: tomc ...

  5. 学Python必须背的42个常见单词,看看你都会吗?

    这42个单词是学习Python必须背会的单词,也是代码中常见的单词.希望你能都背下来! ! 1. adult  [ˈædʌlt]  成年人 2. authentication [ɔːˌθentɪˈke ...

  6. jQuery---淘宝精品案例

    淘宝精品案例 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...

  7. 关于2008R2的序列号

    windows server 2008 r2 企业版序列号 BX4WB-3WTB8-HCRC9-BFFG3-FW26F P63JV-9RWW2-DJW7V-RHTMT-W8KWJ MDB49-7MYG ...

  8. CVE-2019-0708 远程桌面代码执行漏洞复现

    0x01 首先是靶机,这里的靶机是使用清水表哥提供的win7sp1的系统 漏洞环境使用VM安装Windows7 SP1模拟受害机Windows7 SP1下载链接:ed2k://|file|cn_win ...

  9. Keras 回归 拟合 收集

    案例1 from keras.models import Sequential from keras.layers import Dense, LSTM, Activation from keras. ...

  10. 杭电oj_2047——阿牛的EOF牛肉串(java实现)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2047 思路:先是列出了四个,但是没发现规律,然后开始画递归树,在其中找到了规律,算出递归式为f(n) ...