C++ IOS::clear() function



The C++ std::ios::clear() function is used to reset the stete flags of an input/output stream. Streams can enter an error state due to operations like invalid input or output failures. When this function is invoked, it clears these error flags, restoring the stream to a good state so that further I/O operations can be performed.

Syntax

Following is the syntax for std::ios::clear() function.

void clear (iostate state = goodbit);

Parameters

  • state − An object of type ios_base::iostate that can take as value any combination of the following member constants.

iostate value

(member constant)

indicates functions to check state flags
good() eof() fail() bad() rdstate()
goodbit No errors (zero value iostate) true false false false goodbit
eofbit End-of-File reached on input operation false true false false eofbit
failbit Logical error on i/o operation false false true false failbit
badbit Read/writing error on i/o operation false false true true badbit

Return Value

This function does not return anything.

Exceptions

If an exception is thrown, the stream is in a valid state. It throws an exception of member type failure if the resulting error state flag is not goodbit and member exceptions was set throw for that state.

Data Races

Modifies the stream object.

Concurrent access to the same stream object may cause data races.

Example

In the following example, we are going to consider the basic usage of the clear() function.

#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;
}

Output

If we run the above code it will generate the following output −

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

Example

Let's look at the following example, where we are going to clear the std::cin after a failed input.

#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;
}

Output

Output of the above code is as follows −

Enter a number: 1212
Entered Input : 1212
ios.htm
Advertisements