previous next Up Title Contents Index

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++;
	}

Tehtävä 17.152 Ylimääräinen lukeminen

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++;
	}


previous next Up Title Contents Index