C++ IOS::clear() 函数



C++ 的std::ios::clear()函数用于重置输入/输出流的状态标志。由于无效输入或输出失败等操作,流可能会进入错误状态。调用此函数时,它会清除这些错误标志,将流恢复到良好状态,以便可以执行进一步的 I/O 操作。

语法

以下是 std::ios::clear() 函数的语法。

void clear (iostate state = goodbit);

参数

  • state - 一个类型为 ios_base::iostate 的对象,其值可以是以下成员常量的任意组合。

iostate

(成员常量)

指示 用于检查状态标志的函数
good() eof() fail() bad() rdstate()
goodbit 无错误(零值 iostate true false false false goodbit
eofbit 输入操作到达文件末尾 false true false false eofbit
failbitI/O 操作的逻辑错误 false false true false failbit
badbitI/O 操作的读/写错误 false false true true badbit

返回值

此函数不返回任何内容。

异常

如果抛出异常,则流处于有效状态。如果结果错误状态标志不是 goodbit 并且成员异常设置为为此状态抛出,则它会抛出一个成员类型为 failure 的异常。

数据竞争

修改流对象。

并发访问同一流对象可能会导致数据竞争。

示例

在以下示例中,我们将考虑 clear() 函数的基本用法。

#include <iostream>
int main()
{
    std::cin.setstate(std::ios::failbit);
    if (std::cin.fail()) {
        std::cout << "Error State Detected. Clearing Errors.\n";
        std::cin.clear();
    }
    std::cout << "Stream Is Now Ready For Use.\n";
    return 0;
}

输出

如果我们运行以上代码,它将生成以下输出 -

Error State Detected. Clearing Errors.
Stream Is Now Ready For Use.

示例

让我们看一下下面的示例,我们将清除失败输入后的 std::cin。

#include <iostream>
int main()
{
    int x;
    std::cout << "Enter a number: ";
    std::cin >> x;
    if (std::cin.fail()) {
        std::cerr << "Clearing the error state.\n";
        std::cin.clear();
        std::cin.ignore(10000, '\n');
    } else {
        std::cout << "Entered Input : " << x << '\n';
    }
    return 0;
}

输出

以上代码的输出如下 -

Enter a number: 1212
Entered Input : 1212
ios.htm
广告