美文网首页
C++IO的clear()函数

C++IO的clear()函数

作者: 逆若流溪 | 来源:发表于2019-08-25 22:03 被阅读0次

参考C++ Primer中文版279页8.1.2

C++的IO对象中存在一个clear()成员函数,作用是将流的条件状态复位,即如果原来的流已经遇到了eofbit,failbit或者badbit,可以经通过clear()函数将流重新复位为goodbit();

那么该如何理解这句话

首先需要明白:
eofbit表示当前流已经到了文件末尾
failbit表示一个IO操作失败了
badbit表示流已经崩溃
即,当以上三种情况出现时均会导致流对象的失效,同样也可以理解为如果将流作为判断条件,则此时流的状态值为false(注:流是可以直接作为判断条件的)
当以上三种情况出现后,流会失效,之后将不能继续使用该流对象,举个例子:

#include<iostream>
using namespace std;
int main()
{
    int num1, num2;
    while (cin>>num1)//1,此处需要采用ctrl+z进行退出循环(windows环境下)
    {
        cout << num1 << endl;
    }
    cout << cin.eof() << cin.fail() << cin.bad() << endl;//2,这行代码分别输出流是否处于eofbit,failbit,badbit状态
    cin >> num2 ;
    cout << "后边的:"<<num2 << endl;
}
输出结果1

通过输出结果可以看出,通过ctrl+z退出循环时,导致了流状态eofbit,failbit的产生,同时cin>>num2;并没有被执行,现在给原有的代码加上cin.clear();,并执行.

#include<iostream>
using namespace std;
int main()
{
    int num1, num2;
    while (cin>>num1)
    {
        cout << num1 << endl;
    }
    cout << cin.eof() << cin.fail() << cin.bad() << endl;
    cin.clear();
    cout << "第二次流状态:"<<cin.eof() << cin.fail() << cin.bad() << endl;
    cin >> num2 ;
    cout << "后边的:"<<num2 << endl;
}
输出结果2
通过两次的执行结果的对比可以看出clear()eofbitfailbit进行了复位,使其重新处于goodbit的状态,并可以再次使用.

希望通过这篇文章了解该如何使用clear()函数

相关文章

  • C++IO的clear()函数

    参考C++ Primer中文版279页8.1.2 C++的IO对象中存在一个clear()成员函数,作用是将流的条...

  • Python——BS4函数

    1.clear()函数 clear()方法移除当前tag的内容 2.extract()函数 extract()方法...

  • day8 函数基础

    一 字典的相关方法 1.clear函数 形式: 字典.clear() - 清空字典(删除字典中所有的键值对) 2....

  • STL vector 清空的几种方法

    1. 直接赋值替换 清空元素,但不回收空间 2. clear() 使用clear()成员函数,清空元素,但不回收空...

  • 学习TypeScript(Map 对象)

    创建 Map let myMap = new Map(); Map 相关的函数与属性: map.clear() –...

  • python笔记 | tkinter treeview 取消选择

    试过selection_clear(),但是这个函数好像没什么用。找到这样的解决方法, 成功

  • c++IO的tie

    参考c++中文版282页"刷新输出缓冲区"和"关联输入和输出流" tie函数是流对象的成员函数,有两个重载版本1,...

  • 清空输出

    dm ' log; clear; odsresult;clear; output; clear; ';

  • 遗传算法案例代码注解【转】

    本代码采用matlab编写: %% I. 清空环境变量 clear all clc %% II. 绘制函数曲线 x...

  • 07-字典与集合的操作

    字典 创建多个元素的字典 字典的遍历 遍历键 遍历键和值 字典的内置函数 clear() 清空字典 **copy...

网友评论

      本文标题:C++IO的clear()函数

      本文链接:https://www.haomeiwen.com/subject/tgwkectx.html