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

c++ setstate解决思路

2012-04-10 
c++ setstate这些日子刚开始看C++primier,中间看到标准I/O库这一章的多种状态的处理,遇到了下面这句,请教

c++ setstate
这些日子刚开始看C++primier,中间看到标准I/O库这一章的多种状态的处理,遇到了下面这句,请教哪位高人给解释一下这句到底是干什么用的呀。
原文如下:
// sets both the badbit and the failbit  
  is.setstate(ifstream::badbit | ifstream::failbit);  

将对象 is 的 failbit 和 badbit 位同时打开。实参:  

  is.badbit | is.failbit  

  生成了一个值,其对应于 badbit 和 failbit 的位都打开了,也就是将这两个位都设置为 1,该值的其他位则都为 0。在调用 setstate 时,使用这个值来开启流条件状态成员中对应的 badbit 和 failbit 位。

[解决办法]
我也遇到同样的问题,在编译器里试了一下,ifstream::badbit对应的二进制是100,ifstream::failbit的二进制是010,ifstream::eofbit的二进制是001。ifstream::badbit | ifstream::failbit即将state设置为110,也就是他上面说的同时打开了badbit和failbit位。不知道这个解释是否是楼主想要的?
[解决办法]
7#说的相当明白了 | 就是或运算 ,ifstream::badbit | ifstream::failbit就是把他们的2进制值进行或运算而已,计算出来的值表示拥有他们共同的属性,这在VC中很常见,例如表示窗口样式时,控件显示样式等等,至于ifstream::badbit | ifstream::failbit这样计算有没有什么用处,建议不做考虑,其实一点用也没有

热点排行