CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

有关iostream的bitstate.

楼主THEBEST(你厉害!)2004-05-04 00:18:48 在 C/C++ / C++ 语言 提问

#include   <iostream>    
  using   namespace   std;    
  int   main()    
  {    
  cout.clear(ios_base::eofbit);    
  //or:    
  //cout.setstate(cin.failbit);    
  if(cout)    
          cout   <<   "ok"   <<   endl;    
  else   cout   <<   "fail"   <<   endl;    
  system("PAUSE");    
  }  
   
  1>为什么io流的位状态是静态定义在ios_base中呢?    
  我觉得如果istream对象位状态损坏了不会影响ostream对象正常工作呀    
  反之也是一样.但这样的话cin我让它失败导致cout也无法工作了.这两个类应该不要去关联起来吧?    
  2>上面的cout.clear(ios_base::eofbit);也会导致cout失败,为什么呢?    
  我看istream继承的operator   void   *()是这样定义的:    
  operator   void*()   const    
              {   return   this->fail()   ?   0   :   const_cast<basic_ios*>(this);   }  
   
  而fail()成功时只会是发生badbit,failbit被设置的情况下呀.在eofbit被设置时不会影响它吧?能解释一下吗?  
   
   
  问题点数:20、回复次数:4Top

1 楼diaoni(三条腿的废柴)回复于 2004-05-04 02:50:50 得分 20

1.goodbit,failbit,eofbit,badbit只是用来表示当前stream对象的状态的一些常量,对由其派生的所有stream对象通用,当然是放在ios_base中啦  
  “cin我让它失败导致cout也无法工作了”会吗?举个例子,我没试过。  
  2.cout.clear(ios_base::eofbit);  
      此时对cout进行条件判定的结果一定为true,与operator   void*   ()的结果一致  
      但之后对cout的使用将不会有任何输出(如:cout<<"hello"<<endl;),因为cout已被标志为  
      eof,所以它将不会执行任何对其缓冲区的读操作  
      假如这样写:  
      if(cout)  
      {  
              cout.clear();  
              cout<<"ok"<<endl;  
      }  
      就没问题了Top

2 楼THEBEST(你厉害!)回复于 2004-05-04 20:28:02 得分 0

1>  
  哦第一个问题是我搞错了,不是cin设置失败cout没用.  
  它是有用,但我想知道它们的状态是静态定义的.不是只有一份实例吗?  
  怎么又分别在cin,cout中不同呢?  
   
  第二个问题我没想到我已经设置了eof.:)  
  Top

3 楼THEBEST(你厉害!)回复于 2004-05-05 15:49:00 得分 0

能解释一下么?Top

4 楼THEBEST(你厉害!)回复于 2004-05-07 21:13:40 得分 0

没人解释?Top

相关问题

  • 请教一个有关iostream的问题
  • 请问有关c到c++的include iostream的问题
  • iostream iterator
  • <iostream.h> && <iostream>
  • <iostream>与〈iostream.h>??
  • VC的<iostream> :(
  • 有关SOFTICE
  • 有关softice
  • 有关ASP....
  • 有关ASP.......

关键词

  • eofbit
  • failbit
  • cout
  • cin
  • 设置
  • ios

得分解答快速导航

  • 帖主:THEBEST
  • diaoni

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo