Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

17.2.2 Tiedostosta lukeminen >> ja tiedostoon kirjoittaminen <<

Tiedostosta lukeminen on jälleen analogista päätesyötön kanssa:

	fi >> luku;

Kuitenkin jos tiedostosta ei olekaan lukua, on virheen käsittely kohtuullisen työlästä. Siksi mieluummin kannattaa aina lukea tiedostosta rivi merkkijonoon ja sitten käsitellä tämä merkkijono tarvittavalla tavalla. Lisäksi >>-operaattorilla luettaessa lukupuskuri jää rivin "loppumerkin" kohdalle. Tällöin seuraava getline saa vain tyhjän rivin. Tämänkin vuoksi on helpompaa lukea aina kokonainen rivi.

Vastaavasti kirjoittamista varten avattuun tiedostoon kirjoitettaisiin

	ofstream fo("tulos.dat");  // avataan tiedosto kirjoittamista varten
	...                        // avauksessa vanha tiedosto tuhoutuu
	fo << luku;

Mikäli avattaessa tiedostoa kirjoittamista varten, ei haluta tuhota vanhaa sisältöä, vaan kirjoittaa vanhan perään, käytetään avauksessa openmode parametriä ios::app ( append):

	  ofstream fo("virheet.txt",ios::app);  // avataan perään kirjoittamista varten

Tiedoston jatkaminen on erittäin kätevään esimerkiksi virhelogitiedostoja kirjoitettaessa.

Tiedoston lukemisessa ja kirjoittamisessa myös kaikki muut cin ja cout - olioista tutut metodit ja funktiot ovat käytössä, esimerkiksi:

	char s[80]; string st;
	fi.getline(s,sizeof(s));
	getline(fi,st);

Useimmiten kannattaa kaikki näyttöön tulostavat aliohjelmat/metodit kirjoittaa sellaiseksi, että niille viedään parametrinä se tietovirta, johon tulostetaan. Näin samalla aliohjelmalla voidaan helposti tulostaa sitten näyttöön tai tiedostoon tai jopa kirjoittimelle (joka on vain yksi tietovirta muiden joukossa, esim. Windowsissa PRN-niminen tiedosto).


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys