Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

17.5.2 Rivi kerrallaan lukeminen

Ongelmaa voidaan osittain ratkaista lukemalla tiedostoa merkkijonoon aina rivi kerrallaan:

	  ifstream(fi); string rivi; char nimike[20]; double hinta; int kpl;
	...
	  while ( getline(fi,rivi) ) {
	    if ( rivi <= "" ) continue;
	    sscanf(rivi.c_str(),"%s |%lf |%d",nimike,&hinta,& kpl);
	    ...
	  }
	... 

Tässäkin vaihtoehdossa on vielä muutamia huonoja puolia:

*
virheellinen rivi hyväksytään ja lopuille arvoille jää edellisen kerran arvot
*
sscanf käytetyllä formaatilla on vaarallinen, mikäli nimikekenttään sattuisi tulemaan nimike, jossa on yli 20 merkkiä
*
mikäli nimikekentässä tarvittaisiin nimi, jossa on välilyöntejä, menisi syöttö jälleen sekaisin
*
mikäli rivillä olisi ennalta tuntematon määrä kenttiä, ei tämä formaatti toimisi

Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys