Tiedostojen käsittely C++:ssa on vain cin ja cout - tietovirtoja vastaavien tietovirtojen käsittelyä.
Olkoon meillä tiedosto nimeltä luvut.dat:
13.4 23.6 kissa 1.9 <EOF> <- ei aina välttämättä mikään merkki
Kirjoitetaan esimerkkitiedoston luvut lukeva ohjelma C++:n tietovirroilla. Tarkoitus on hylätä ne rivit, joiden alussa ei ole reaalilukua:
// Ohjelma lukee tiedostosta luvut.dat lukuja ja tulostaa niiden // summan ja keskiarvon. Jos tiedostossa on virheellisiä // rivejä, tulostetaan ne. #include <iostream> #include <stdio> #include <fstream> // File stream #include <string> using namespace std; int main(void) { double luku,summa,ka; string s; int n; ifstream fi("luvut.dat"); if ( !fi ) { cout << "Tiedosto ei aukea!" << endl; return 1; } summa = 0.0; n = 0; ka = 0.0; while ( getline(fi,s) ) { if ( sscanf(s.c_str(),"%lf",&luku) <= 0 ) { cout << s << "\n"; continue; } summa += luku; n++; } fi.close(); if ( n > 0 ) ka = summa/n; cout.precision(2); cout.setf(ios::showpoint | ios::fixed); cout << "\n"; cout << "Lukuja oli " << n << " kappaletta\n"; cout << "Niiden summa oli " << summa << "\n"; cout << "ja keskiarvo oli " << ka << endl; return 0; }
Tiedostossa oli seuraavat laittomat rivit: kissa Lukuja oli...