C++问题:if( input.rdstate() & std::ios::failbit )
2012-05-02 11:41 Rollen Holt 阅读(920) 评论(0) 编辑 收藏 举报前言
今天在博客园的博问里面看到这个问题:觉的挺不错的,收集一下。以后有时间的话也会继续收集一些自己不会的问题,然后整理到自己的博客里面。
因为不断的遇到问题,不断的解决问题才能更好,更快的学习,成长。或许将来一不小心自己也遇到了同样的问题的话,就有经验了。
正文:原问题地址:http://q.cnblogs.com/q/35130/
其中的:
std::ifstream input; input.open( filename.c_str(), std::ifstream::in ); if( input.rdstate() & std::ios::failbit )
if语句那一行怎么理解?
解答:
1:iostate rdstate ( ) const; 返回的是iostate,简单的说也就是一个int数值.用2进制数据的某一个位置设置为1表示一种状态
2:failbit 的定义如下,二进制数据的第二位为1的时候说明是该数据。
static const _Iostate goodbit = (_Iostate)0x0;
static const _Iostate eofbit = (_Iostate)0x1;
static const _Iostate failbit = (_Iostate)0x2;
static const _Iostate badbit = (_Iostate)0x4;
static const _Iostate _Hardfail = (_Iostate)0x10;
3:input.rdstate() & std::ios::failbit 通过位运算的与来判断当前的状态是否是failbit。
不过不能说是等价与if( input.rdstate()==std::ios::failbit ),
if( (input.rdstate() & std::ios::failbit)==std::ios::failbit),因为input.rdstate()中有多个状态,而std::ios::failbit 只是一个状态而已。
==============================================================================
本博客已经废弃,不在维护。新博客地址:http://wenchao.ren
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员
==============================================================================