C++语法基础--标准IO库--简单的标准IO库

1.IO标准库类型和头文件


    

2.简单的iostream继承层次


     

3.IO对象不可复制或赋值,如需传递或返回IO对象,则必须传递或返回指向该对象的指针或引用(必须为非const)。
   eg:
     void f(ostream os)
 //error   
   {
os<<"test";
    }


4.IO标准库的条件状态:


  

 

5.简单检测流的真值
  int main()
  {
int a;
cin>>a;
cout<<(cin?1:0)<<endl;  
//当上一条语句输入为数值时输出的1,否则输出0
return 0;
   }


6.每个IO类定义了badbit,failbit,eofbit常量值
  eg:
   int main()
   {
cout<<iostream::badbit<<endl;
//4
cout<<iostream::failbit<<endl;//2
cout<<iostream::eofbit<<endl;//1
return 0;
   }
   
  
7.rdstate():
  返回一个iostate类型的值,该值对应于流当前的整个条件状态
  eg:
     istream::iostate old=cin.rdstate();

  
8.一次处理多种状态:
  eg:
        ifstream in;
.........
in.setstate(ifstream::failbit|ifstream::badbit);


9.clear():
        .......
        cin.clear();

       cin.ignore(1024,' ');  //跳过1024个字符,或遇到空格为或文件结束为止

      易错提醒:

                      clear()只是将流设置为有效状态,当再次读取缓冲区的数据时读取到的依然是原来的数据,如果                         不跳过原来无效的数据,流条件状态会再次进入failbit。



综合应用:
  eg:
    int main()    
{
int val;


while(cin>>val ,!cin.eof())  
//循环读取数据,遇到失败的跳过,直到文件结束符为止
    {
        if(cin.bad())
        {
            cerr<<"bad,error!"<<endl;
            exit(-1);
        }
        if(cin.fail())
        {
            cerr<<"fail,illegal vale,try again!"<<endl;
cin.clear();
cin.ignore(1024,' ');
continue;
 
        }
 
        if(cin.good())
        {
            cerr<<"good"<<endl;
        }
 
         
    }
return 0;
}

运行结果:

 


     下集预告:

                     输出缓冲区的管理


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值