std::basic_ios<CharT,Traits>::eof
bool eof()const; | ||
Returns true if the associated stream has reached end-of-file. Specifically, returns true if eofbit
is set in rdstate().
See ios_base::iostate for the list of conditions that set eofbit
.
Contents |
[edit]Parameters
(none)
[edit]Return value
true if an end-of-file has occurred, false otherwise.
[edit]Notes
This function only reports the stream state as set by the most recent I/O operation; it does not examine the associated data source. For example, if the most recent I/O was a get() which returned the last byte of a file, eof()
returns false. The next get()
fails to read anything and sets the eofbit
. Only then does eof()
return true.
In typical usage, input stream processing stops on any error. eof()
and fail() can then be used to distinguish between different error conditions.
[edit]Example
#include <cstdlib>#include <fstream>#include <iostream> int main(){std::ifstream file("test.txt");if(!file)// operator! is used here{std::cout<<"File opening failed\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<<"I/O error while reading\n";elseif(file.eof())std::cout<<"End of file reached successfully\n";elseif(file.fail())std::cout<<"Non-integer data encountered\n";}
[edit]See also
The following table shows the value of basic_ios accessors (good(), fail(), etc.) for all possible combinations of ios_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 |
checks for the end-of-file (function) |