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:
codice:
while ( ( grade = cin.get() ), !cin.eof() ) {
(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)
grazie mille, anche se non capisco come sia possibile che il codice del libro sia sbagliato.