Funkcja eof() zwraca true jeżeli plik ma ustawioną flagę eofbit. Dzieje się tak gdy odczytasz ostatni znak pliku. Jeżeli nie uda się otworzyć pliku (brak pliku / brak uprawnień do odczytu) to flaga eofbit nie zostanie ustawiona.
Jeżeli wykryjesz błąd pliku to po prostu zakończ program/funkcję.
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream plik;
plik.open("test.txt",ios::in);
if(plik.good()==false) {
cout << "error" << endl;
// zakończ program
return 1;
}
char znak;
while(!plik.eof()) {
plik >> znak;
cout << znak << endl;
}
plik.close();
return 0;
}