Javatpoint Logo
Javatpoint Logo

ios::rdstate() Function in C++

ios::rdstate() is an essential part of the C++ Input/Output Stream Library. It enables programmers to evaluate a stream's current state. It is essential to comprehend this function for C++ programs to have reliable error handling and stream management.

What is the ios::rdstate() function?

The word "rdstate" is an acronym for "read state", which reflects the main objective of the function, which is to provide data about the current state of an input or output stream. In C++, streams are linked to different states, including fail, eof, good, and bad. Developers can make well-informed decisions based on the current state of the stream by using the bitmask returned by the ios::rdstate() method to represent the stream's current state.

In C++, the ios::rdstate() method yields a bitmask that shows the input or output stream's current state. This bitmask is made up of several flags, each of which denotes a possible condition or state for the stream.

Now let's explore more deeply into the several states that ios::rdstate() can represent:

  • The value that ios::rdstate() returns is a collection of flags denoting various states.

The main red flags consist of:

  1. ios::goodbit:
    • Depicts a stream that is error-free and free of conditions.
  2. ios::eofbit:
    • The indicator indicating the end of the file has been reached is ios::eofbit.
  3. ios::failbit:
    • Indicates when an input operation has a non-fatal error.
  4. ios::badbit:
    • Signals are a serious error that occurs during an input process.
  5. ios::goodbit:
    • This flag denotes the absence of errors or eof conditions and the stream's good condition.


  • When ios::rdstate() returns ios::goodbit, it indicates that there are no problems with the stream's operation.


  • When an input action reaches the end-of-file (EOF), the ios::eofbit flag is set.
  • If you want to know if there is any more data to read from the stream, you can check for ios::eofbit.


  • When an input operation results in a non-fatal error, the ios::failbit flag is set.
  • Invalid data types or formats encountered during input are examples of non-fatal failures.
  • When ios::rdstate() returns ios::failbit, it indicates that there was a problem, but the stream is still functional.


  • When a significant error occurs during an input operation, the ios::badbit flag is raised.
  • Problems with memory allocation, hardware malfunctions, or other serious problems could be considered severe failures.


  • If ios::rdstate() contains ios::badbit, there is a major issue that might necessitate stopping the programme or taking other extreme steps.

Significance of ios::rdstate() in Error Management:

The ios::rdstate() method is particularly useful in situations involving error handling. Developers can take appropriate action depending on whether the stream is in a good state, has reached the end-of-file, or has encountered issues by evaluating the stream status after each operation. Because of its granular control, C++ programs that work with input and output streams may handle errors more precisely and effectively, which increases their overall reliability.


Let's take a program to illustrate the ios::rdstate() function in C++:


ios::rdstate() Function in C++


1. File Opening:

  • Using an ifstream (input file stream), the program tries to open a file called "example.txt".
  • Uses is_open() to determine whether the file was successfully opened.
  • If not, the program exits with an error code and writes an error message to std::cerr.

2. Reading from File in a Loop:

  • Utilizing the >> operator, a while loop is started to read numbers from the file.
  • It executes operations (in this case, outputting the read integer) for each integer that is successfully read.

3. Check Stream State After Each Read Operation:

  • The input stream's current state is obtained using rdstate() following each read operation.
  • Look for certain flags in the retrieved state:
  • The end of the file has been reached if the eofbit is set. It outputs a message and exits the loop.
  • In the event that the failbit is set, a non-fatal error occurs during the read operation. It sends a message about an error to std::cerr. If necessary, you can deal with the error.
  • In the event that the badbit is set, a serious malfunction occurrs during the read operation. std::cerr receives a print of a severe error message. You can decide whether to end the programme or deal with the error.

4. File Closure:

  • The close() is used to close the file at the end of the loop to release system resources linked to the file.

5. Programme Exit:

  • If all goes according to plan, the program ends with a return code of 0. The program terminates with a non-zero error code if there was a problem opening the file.

Youtube For Videos Join Our Youtube Channel: Join Now


Help Others, Please Share

facebook twitter pinterest

Learn Latest Tutorials


Trending Technologies

B.Tech / MCA