grazie mille, anche se non capisco come sia possibile che il codice del libro sia sbagliato.Originariamente inviato da MItaly
"EOF" non è un vero carattere - è semplicemente un modo con cui la funzione C fgetc segnala che lo stream di input è terminato; cin.get() non restituisce EOF quando il file è terminato.
cin (e in generale gli stream C++ derivati da std::istream) usa un modo diverso per segnalare che si è raggiunta la fine del file: imposta il "bit di EOF" dello stream, che puoi controllare usando il metodo cin.eof(); la tua condizione diventa quindi:
(l'operatore virgola scarta esegue l'espressione a sinistra e ne scarta il risultato; in questa maniera, si può effettuare il controllo di eof subito dopo aver tentato la lettura)codice:while ( ( grade = cin.get() ), !cin.eof() ) {