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.
SyntaxFollowing is the syntax for std::ios::setstate() function.
void setstate (iostate state);Parameters
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.
ExceptionsIf 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 RacesModifies the stream object.
Concurrent access to the same stream object may cause data races.
ExampleLet'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
ios.htm
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4