# std::basic_ios::eof

From cppreference.com
< cpp‎ | io‎ | basic ios

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`.

### Parameters

(none)

### Return value

true if an end-of-file has occurred, false otherwise.

### 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 `eof()` returns true.

In typical usage, input stream processing stops on any error; `eof()` and fail() are then used to distinguish between different error conditions.

### Example

Run this code

    #include <iostream>
    #include <fstream>
    #include <cstdlib>
    int main()
    {
        std::ifstream file("test.txt");
        if(!file)  // operator! is used here
        {
            std::cout << "File opening failed\n";
            return EXIT_FAILURE;
        }

        // typical C++ I/O loop uses the return value of the I/O function
        // as the loop controlling condition, operator bool() is used here
        for(int n; file >> n; ) {
           std::cout << n << ' ';
        }
        std::cout << '\n';

        if (file.bad())
            std::cout << "I/O error while reading\n";
        else if (file.eof())
            std::cout << "End of file reached successfully\n";
        else if (file.fail())
            std::cout << "Non-integer data encountered\n";
    }

### 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

feof | checks for the end-of-file (function)

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/io/basic_ios/eof&oldid=78193"