需要连续从标准输入读取数据时,可以采用下面两种不同的方式判断文件结束:

[cpp] view plaincopy

 
  1. int i;
  2. while(scanf("%d",&i) != EOF){do whatever...}
  3. while(cin >> i){do whatever...}

首先看scanf,当成功读取时返回读取的项的数目,如:scanf("%d %d",&i,&j)返回2,scanf("%d %f %s",&i, &f, c)返回3。这个数目可以是你希望读取的项数,也可能小于希望读取的项数,在匹配失败时返回0(如:用scanf("%d",&i)接收整数而输入是英文字母时就返回0)。需要注意的是用while(scanf("%d",&i) != EOF)时,接收到像876652098643267843超过int型取值范围的数时循环也会继续执行;相同的情况出现在while(cin >> i)上时循环会立即结束。

cin >>返回值的类型是basic_istream&,代表cin的地址。在ios.h文件中定义了类型转换函数:

[cpp] view plaincopy

 
  1. operator void *() const { if(state&(badbit|failbit) ) return 0; return (void *)this; }

有这个函数定义后,需要时ios类型转换成void*类型。而在读入发生错误时返回0。

在对一个流对象进行I/O操作发生错误时,错误的类型被记录在ios类的一个数据成员中。

ios类中定义的描述错误状态的常量:
       goodbit-------------没有错误,正常状态 
       eofbit---------------到达流的结尾 
       failbit---------------I/O操作失败,清除状态字后,可以对流继续进行操作。 
       badbit--------------试图进行非法操作,清除状态字后,流可能还可以使用。 
       hardfail------------致命错误,不可恢复的错误。 
对应于这些位,可用ios中定义的如下函数来检查流的当前状态位:
       int good()---------如果正常,返回非0值
       int bad()-----------如果badbit被设置,返回非0值
       int eof()------------如果eofbit被设置,返回非0值
       int fail()------------如果failbit被设置,返回非0值
       int rdstate()------返回当前错误状态位.

最新文章

  1. bzoj2086【Poi2010】Blocks
  2. 【BZOJ-4423】Bytehattan 并查集 + 平面图转对偶图
  3. BZOJ1088: [SCOI2005]扫雷Mine
  4. SQLAlchemy增删改查基本操作,及SQL基本技能样码(join,group)
  5. POJ 2104 静态找区间第k大
  6. socket.io的抽象实现:engine.io
  7. CR0,CR3寄存器
  8. Linq/List/Array/IEnumerable等集合操作
  9. Flex 开发框架汇总
  10. java 单链表的实现
  11. Python新式类继承的C3算法
  12. 二 Djano模型层之模型字段选项
  13. TensorFlow练习2: 对评论进行分类
  14. CVE_2012_1876堆溢出分析
  15. Bootstrap面板
  16. 【iCore4 双核心板_ARM】例程十一:DMA实验——存储器到存储器的传输
  17. docker 实践
  18. ASP.NET私有构造函数作用
  19. java.sql.SQLException: ORA-00932: 数据类型不一致: 应为 -, 但却获得 CLOB
  20. jenkins 入门教程(上)【转】

热门文章

  1. linux下常用网页查看下载工具--wget
  2. html5小趣味知识点系列(二)tabindex
  3. Android屏幕密度(Density)和分辨率概念详解
  4. java.lang.IllegalStateException: ImageView no longer exists. You should not use this PhotoViewAttacher any more.
  5. 【BZOJ4010】[HNOI2015]菜肴制作 拓扑排序
  6. full stack on the road
  7. org.apache.poi3.1.7 Excle并发批量导入导出
  8. 九度OJ 1203:IP地址 (字符串处理)
  9. nginx学习之压缩解压篇(七)
  10. 低秩近似 low-rank approximation