previous next Up Title Contents Index

17.2 Tiedostojen käsittely C++:n tietovirroilla

Vastaavasti kuin C- funktiolla on tiedostojen käsittely C++:ssa vain cin ja cout - tietovirtoja vastaavien tietovirtojen käsittelyä.

Kirjoitetaanpa vastaava tiedoston luvut lukeva ohjelma C++:n tietovirroilla:

tiedosto\tied_ka.cpp - Lukujen lukeminen tiedostosta

	// Ohjelma lukee tiedostosta LUVUT.DAT lukuja ja tulostaa niiden
	// summan ja keskiarvon. 
	#include <iostream.h>
	#include <fstream.h>
	
	int main(void)
	{
	  double luku,summa,ka;
	  int n;
	
	  ifstream fi("luvut.dat");
	  if ( !fi ) {
	    cout << "Tiedosto ei aukea!" << endl;
	    return 1;
	  }
	
	  summa = 0.0;  n = 0;  ka = 0.0;
	
	  while ( !fi.eof() ) {
	    fi >> luku;
	    if ( fi.fail() ) {
	      fi.clear();
	      char ch;  fi.get(ch);
	      cout << ch;
	      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;
	}



previous next Up Title Contents Index