• scanf和cin的返回值


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

    [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()------返回当前错误状态位.

  • 相关阅读:
    Python设置桌面壁纸
    youtube-dl使用介绍
    Matlab pcg函数的句柄形式之参数传递
    Sublime 安装支持GBK的插件
    MarkdownPad安装
    ug7.5经常卡死的解决方法
    HM NIS edit打包软件
    UG工程制图
    egg框架中是如何使用MD5加密的 实现用户修改密码 小编在这里献丑了。。。。。
    今天遇到了vue项目中使用Iconfont图标 ,感觉挺实用的 随手记录下。只需简单的6步就可以实现
  • 原文地址:https://www.cnblogs.com/gongpixin/p/4477471.html
Copyright © 2020-2023  润新知