
- 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::setstate() function
The C++ std::ios::setstate() function is used to modify the state of an input/output stream. It sets the stream's internal state flags, such as badbit, failbit, eofbit indicating various error conditions like read/write errors, operation failures, or EOF. This function helps in error handling by enabling the program to check and respond to the stream's state after performing I/O operations.
Syntax
Following is the syntax for std::ios::setstate() function.
void setstate (iostate state);
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
It 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
Let's look at the following example, where we are going to manually set the failbit of an input stream to simulate an input failure.
#include <iostream> #include <sstream> int main() { std::istringstream a("112 ABC"); int x; a >> x; std::cout << "First Read: " << x << std::endl; a.setstate(std::ios::failbit); a >> x; if (a.fail()) { std::cout << "Second Read Failed Due Do setstate()" << std::endl; } return 0; }
Output
Output of the above code is as follows −
First Read: 112 Second Read Failed Due Do setstate()
Example
Consider the following example, where we are going to combine both failbit and eofbit.
#include <iostream> #include <sstream> int main() { std::istringstream a("112"); int x; a >> x; std::cout << "First Read: " << x << std::endl; a.setstate(std::ios::failbit | std::ios::eofbit); a >> x; if (a.fail() && a.eof()) { std::cout << "Second Read Failed Due To setstate() With eofbit." << std::endl; } return 0; }
Output
Following is the output of the above code −
First Read: 112 Second Read Failed Due To setstate() With eofbit.
Example
In the following example, we are going to clear the goodbit to simulate that the stream is no longer in a good state.
#include <iostream> #include <sstream> int main() { std::istringstream x("1213"); int a; x >> a; std::cout << "First Read: " << a << std::endl; x.setstate(std::ios::goodbit); x >> a; std::cout << "Second Read: " << a << std::endl; return 0; }
Output
If we run the above code it will generate the following output −
First Read: 1213 Second Read: 1213