I/O manipulators | ||||
Print functions(C++23) | ||||
C-style I/O | ||||
Buffers | ||||
(C++23) | ||||
(C++98/26*) | ||||
(C++20) | ||||
Streams | ||||
Abstractions | ||||
File I/O | ||||
String I/O | ||||
Array I/O | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++98/26*) | ||||
(C++98/26*) | ||||
(C++98/26*) | ||||
Synchronized Output | ||||
(C++20) | ||||
Types | ||||
Error category interface | ||||
(C++11) | ||||
(C++11) |
Member functions | ||||
State functions | ||||
basic_ios::good | ||||
Formatting | ||||
Miscellaneous | ||||
Protected member functions | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) |
bool good()const; | ||
Returnstrue if the most recent I/O operation on the stream completed successfully. Specifically, returns result ofrdstate()==0.
Seeios_base::iostate for the list of conditions that set the stream status bits.
Contents |
(none)
true if the stream error flags are all false,false otherwise.
#include <cstdlib>#include <fstream>#include <iostream> int main(){constchar* fname="/tmp/test.txt";std::ofstream ofile{fname}; ofile<<"10 "<<"11 "<<"12 "<<"non-int"; ofile.close(); std::ifstream file{fname};if(!file.good()){std::cout<<"#1. Opening file test.txt failed - ""one of the error flags is true\n";returnEXIT_FAILURE;} // typical C++ I/O loop uses the return value of the I/O function// as the loop controlling condition, operator bool() is used herefor(int n; file>> n;)std::cout<< n<<' ';std::cout<<'\n'; if(file.bad()){std::cout<<"#2. I/O error while reading - badbit is true\n";returnEXIT_FAILURE;}elseif(file.eof())std::cout<<"#3. End of file reached successfully - eofbit is true\n""This is fine even though file.good() is false\n";elseif(file.fail())std::cout<<"#4. Non-integer data encountered - failbit is true\n";}
Possible output:
10 11 12 #4. Non-integer data encountered - failbit is true
The following table shows the value ofbasic_ios accessors (good(),fail(), etc.) for all possible combinations ofios_base::iostate flags:
ios_base::iostate flags | basic_ios accessors | |||||||
eofbit | failbit | badbit | good() | fail() | bad() | eof() | operator bool | operator! |
false | false | false | true | false | false | false | true | false |
false | false | true | false | true | true | false | false | true |
false | true | false | false | true | false | false | false | true |
false | true | true | false | true | true | false | false | true |
true | false | false | false | false | false | true | true | false |
true | false | true | false | true | true | true | false | true |
true | true | false | false | true | false | true | false | true |
true | true | true | false | true | true | true | false | true |