设为首页 加入收藏

TOP

io库中的setstate和clear区别
2014-11-23 17:42:45 】 浏览:338
Tags:setstate clear 区别

  再来看看输入状态标记位、状态测试函数、状态设置函数之间的关系:


  输入状态标记位常量有以下几个:


标记位常量





  下面来解释这张表格:


  ios::failbit ios::badbit ios::eofbit ios::goodbit均为常量,它们任何一个都代表了一种流状态,因此称为“输入状态标记位常量”。


  比如,ios::failbit表示的是流状态为


  流的failbit标记位值为1,eofbit标记位值为0,badbit标记位的值为0。


  始终牢记:failbit,badbit,Eofbit组成了流状态


  注意:它们不是failbit、badbit、eofbit、goodbit这四个标记位的存贮变量。


  我们可以用输出语句来验证:


  cout << ios:: failbit << endl;


  cout << ios:: eofbit << endl;


  cout << ios:: badbit << endl;


  cout << ios:: goodbit << endl;


  输出的结果为:


  4


  2


  1


  0


  同样是将3个标记位视为二进制数转化为十进制的原理。


  下面分析clear()函数:


  cin.clear(ios::failbit);


  使得cin的流状态将按照ios::failbit所描述的样子进行设置:failbit标记位为1,eofbit标记位为0,badbit标记位为0。无需担心goodbit标记位,failbit、eofbit、badbit任何一个为1,则goodbit为0。(goodbit是另一种流状态的表示方法)


  cin.clear(ios::goodbit);


  使得cin的流状态将按照ios::goodbit所描述的样子进行设置:failbit标记位为0,eofbit标记位为0,badbit标记位为0。此时goodbit标记位为1,从另一个角度表示cin的流状态正常。


  因此clear() 函数作用是:将流状态设置成括号内参数所代表的状态,强制覆盖掉流的原状态。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇利用异或逻辑交换两个数 下一篇用指针变量指向数组元素效力较高

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目