首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

std:ios:clear 的参数不能结合么

2013-08-16 
std::ios::clear 的参数不能组合么?本帖最后由 shendaowu 于 2013-08-14 13:46:19 编辑#include iostream

std::ios::clear 的参数不能组合么?
本帖最后由 shendaowu 于 2013-08-14 13:46:19 编辑

#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
    cin.clear( ios_base::goodbit );
    printf( "%X\n", cin.rdstate() );
    cin.clear( ios_base::eofbit );
    printf( "%X\n", cin.rdstate() );
    cin.clear( ios_base::failbit );
    printf( "%X\n", cin.rdstate() );
    cin.clear( ios_base::badbit );
    printf( "%X\n", cin.rdstate() );
    
    cout << endl;
    
    cin.clear( ios_base::eofbit & ios_base::failbit );
    printf( "%X\n", cin.rdstate() );
    cin.clear( ios_base::eofbit & ios_base::badbit );
    printf( "%X\n", cin.rdstate() );
    cin.clear( ios_base::failbit & ios_base::badbit );
    printf( "%X\n", cin.rdstate() );

    return 0;
}
后面的那几个输出全都是零。

还有怎么理解这个函数名?这个函数的功能明显不是设置么?怎么用clear这个这么容易引起歧义的名字?虽然默认情况下clear()确实是清空错误的意思,但是其他的情况就没有人用么?
[解决办法]
cin.clear( ios_base::eofbit & ios_base::failbit );
---------------------------------------------
状态位的结合操作不是用 & 而是用 
[解决办法]
引用:
Quote: 引用:

cin.clear( ios_base::eofbit & ios_base::failbit );
---------------------------------------------
状态位的结合操作不是用 & 而是用 
[解决办法]
我原来傻逼到这种程度了。
那个函数名的问题你知道么?

clear 默认是清除3个状态位。如果有参数,就置这几个参数1,其他参数清零


相对应有个setstate()函数,只设置相关的标记为1,其余的不变。
大概就是取名clear的缘故。
大多数就用默认的clear,其他的方式很少用。

热点排行