Как работает функция eof () ifstream?

#include <iostream>
#include <fstream>

int main() {
    std::fstream inf( "ex.txt", std::ios::in );
    while( !inf.eof() ) {
        std::cout << inf.get() << "\n";
    }
    inf.close();
    inf.clear();
    inf.open( "ex.txt", std::ios::in );
    char c;
    while( inf >> c ) {
        std::cout << c << "\n";
    }
    return 0;
}

Меня действительно смущает функция eof () . Предположим, что содержимое моего ex.txt было:

abc

Он всегда читает дополнительный символ и показывает -1 при чтении с использованием eof () . Но inf >> c дал правильный результат, который был 'abc'? Может ли кто-нибудь помочь мне объяснить это?

40
задан jww 2 June 2017 в 19:44
поделиться