17.2.3 Tiedoston lopun testaaminen eof
Totuusarvotyyppinen metodi eof palauttaa tosi, kun ollaan tiedoston
lopun kohdalla.
while ( !fi.eof() ) {
Valitettavasti arvo on tosi vasta kun kuvitteellisen loppumerkin kohdalle on
saavuttu, EI silloin kun se on seuraavana. Esimerkiksi tiedostosta
13.4<EOF>
saataisiin kaksi reaalilukua silmukalla:
while ( !fi.eof() ) {
fi >> luku;
summa += luku;
n++;
}
- Miten voitaisiin ilman if- lauseita järjestää
niin, ettei ylimääräinen lukeminen haittaisi summan laskua jos
lukumäärää ei tarvittaisi.
Seuraava auttaisi jos oltaisiin varmoja ettei tiedostossa ole muuta
kuin lukuja:
while ( 1 ) { // Jos muuta kuin lukuja
f >> luku;
if ( f.eof() ) break;
summa += luku;
n++;
}
Jos silmukka saadaan pysäyttää ensimmäiseen virheeseen,
olisi seuraava varmin tapa lukea:
while ( f >> luku ) {
summa += luku;
n++;
}