
- C++ Library - Home
- C++ Library - <fstream>
- C++ Library - <iomanip>
- C++ Library - <ios>
- C++ Library - <iosfwd>
- C++ Library - <iostream>
- C++ Library - <istream>
- C++ Library - <ostream>
- C++ Library - <sstream>
- C++ Library - <streambuf>
- C++ Library - <atomic>
- C++ Library - <complex>
- C++ Library - <exception>
- C++ Library - <functional>
- C++ Library - <limits>
- C++ Library - <locale>
- C++ Library - <memory>
- C++ Library - <new>
- C++ Library - <numeric>
- C++ Library - <regex>
- C++ Library - <stdexcept>
- C++ Library - <string>
- C++ Library - <thread>
- C++ Library - <tuple>
- C++ Library - <typeinfo>
- C++ Library - <utility>
- C++ Library - <valarray>
- The C++ STL Library
- C++ Library - <array>
- C++ Library - <bitset>
- C++ Library - <deque>
- C++ Library - <forward_list>
- C++ Library - <list>
- C++ Library - <map>
- C++ Library - <multimap>
- C++ Library - <queue>
- C++ Library - <priority_queue>
- C++ Library - <set>
- C++ Library - <stack>
- C++ Library - <unordered_map>
- C++ Library - <unordered_set>
- C++ Library - <vector>
- C++ Library - <algorithm>
- C++ Library - <iterator>
- The C++ Advanced Library
- C++ Library - <any>
- C++ Library - <barrier>
- C++ Library - <bit>
- C++ Library - <chrono>
- C++ Library - <cinttypes>
- C++ Library - <clocale>
- C++ Library - <condition_variable>
- C++ Library - <coroutine>
- C++ Library - <cstdlib>
- C++ Library - <cstring>
- C++ Library - <cuchar>
- C++ Library - <charconv>
- C++ Library - <cfenv>
- C++ Library - <cmath>
- C++ Library - <ccomplex>
- C++ Library - <expected>
- C++ Library - <format>
- C++ Library - <future>
- C++ Library - <flat_set>
- C++ Library - <flat_map>
- C++ Library - <filesystem>
- C++ Library - <generator>
- C++ Library - <initializer_list>
- C++ Library - <latch>
- C++ Library - <memory_resource>
- C++ Library - <mutex>
- C++ Library - <mdspan>
- C++ Library - <optional>
- C++ Library - <print>
- C++ Library - <ratio>
- C++ Library - <scoped_allocator>
- C++ Library - <semaphore>
- C++ Library - <source_location>
- C++ Library - <span>
- C++ Library - <spanstream>
- C++ Library - <stacktrace>
- C++ Library - <stop_token>
- C++ Library - <syncstream>
- C++ Library - <system_error>
- C++ Library - <string_view>
- C++ Library - <stdatomic>
- C++ Library - <variant>
- C++ STL Library Cheat Sheet
- C++ STL - Cheat Sheet
- C++ Programming Resources
- C++ Programming Tutorial
- C++ Useful Resources
- C++ Discussion
C++ IOS::rdstate() function
The C++ std::ios::rdstate() function is used to manage the state of input/output streams. It returns the state of the stream as a bitmask, indicating various errors and state flags. These flags indicates the various errors, such as failbit(logical operation failed), badbit(error occured), eofbit(end of file reached).
Syntax
Following is the syntax for std::ios::rdstate() function.
iostate rdstate() const;
Parameters
It does not accepts any parameter.
Return Value
An object of type ios_base::iostate that can contain any combination of the following state flag 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 |
Exceptions
If an exception is thrown, there are no changes in the stream.
Data Races
Accesses the stream object.
Concurrent access to the same stream object may cause data races.
Example
Let's look at the following example, where we are going to check the stream state after an input operation.
#include <iostream> #include <sstream> int main() { std::stringstream a("112 TP"); int x; a >> x; if (a.rdstate() & std::ios::failbit) { std::cout << "Stream Reading Failed.\n"; } else { std::cout << "Stream Read Successfully.\n"; } return 0; }
Output
Output of the above code is as follows −
Stream Read Successfully.
Example
Consider the following example, where we are going to check stream state after a failed input operation.
#include <iostream> #include <sstream> int main() { std::stringstream ss("TutorialsPoint"); int number; ss >> number; if (ss.rdstate() & std::ios::failbit) { std::cout << "Stream Failed To Read.\n"; } else { std::cout << "Stream Read successfully.\n"; } return 0; }
Output
Following is the output of the above code −
Stream Failed To Read.
Example
In the following example, we are going to check stream state after end-of-file (EOF) operation.
#include <iostream> #include <sstream> int main() { std::stringstream a("WELCOME"); std::string b; std::getline(a, b); if (a.rdstate() & std::ios::eofbit) { std::cout << "End Of File Reached.\n"; } else { std::cout << "File Not At End.\n"; } return 0; }
Output
If we run the above code it will generate the following output −
End Of File Reached.