headerphoto

Datové proudy

Všechny funkce pro vstup/výstup, které byly v jazyce C, jsou nadále k dispozici i v C++. Kromě toho máme nové nástroje objektových datových proudů. Najdeme je v hlavičkových souborech iostream, iomanip, fstream. Datový proud reprezentuje vždy nějaký "přesun" dat (plynutí dat, nebo proud dat) od zdroje k cíli.

Výstupní proud cout posílá znaky na standardní výstup pomocí operátoru <<. Vstupní proud cin umí zpracovat všechny standardní datové typy, je připojen na standardní vstup pomocí operátoru >>. Pro chybová hlášení se používá výstupní proud cerr.

Při vstupu textů pomocí operátoru >>, můžeme načítat jen po bílé znaky. Vhodnější je použití funkce getline(), která má 2 varianty (jako metoda třídy cin nebo jako funkce pro třídu string).

Manipulátory, jak již sám název napovídá, slouží k manipulaci s proudem, upravují ho. Přehled základních manipulátorů najdete v následující tabulce.

endlkonec řádku, zároveň vyprázdní buffer
flush vyprázdní buffer třídy
setw(int)minimální počet znaků pro vypsání hodnoty
decvýpis čísla v desítkové soustavě
octvýpis čísla v osmičkové soustavě
hexvýpis čísla v šestnáctkové soustavě
setfill(char)určuje jakým znakem bude vyplňováno volné místo, je-li nastaveno setw
setprecision(int)nastavení přesnosti

Soubory

Formátovaný vstup a výstup u souboru je podobný jako pro standardní proud cout a cin. Při práci se soubory musíme k programu připojit hlavičkový soubor fstream, potom můžeme použít třídu ofstream pro výstup a ifstream pro vstup. Práce se vstupním nebo výstupním proudem probíhá implicitně v textovém režimu.

Soubor musíme nejdříve otevřít a to buď přímo u konstruktoru nebo použitím členské funkce open(). Konstruktor i funkce open() mají 3 parametry. První parametr je cesta k souboru, druhý parametr jsou atributy otevření souboru (viz. tabulka), třetí parametr je pro sdílení souboru. Povinný je jenom první parametr. Při formátovém zápisu do souboru se používá přetížený operátor >> a pro čtení <<. Operátory se používají stejným způsobem jako pro standardní zařízení. Pro zavření souboru můžeme použít metodu close().

Tabulka základních režimů pro otevření souboru.

ios::in režim čtení (implicitní pro ifstream)
ios::out režim zápis (implicitní pro ofstream)
ios::app přidávání na konec souboru
ios::binary binární režim

  /**************  jednoduchý příklad  ****************/
 #include <fstream>
 
 void main()
 {
   int hod = 123;
   ofstream f1;
   f1.open("POKUS.TXT", ios::out);   //otevření pro zápis
              // nebo jenom:  f1.open("POKUS.TXT");
   if(f1.fail())
	 {
	  	cout  << "Chyba pri otevreni souboru";
      return ;
	 }
   f1 << hod;
   f1.close();
   
   hod = 0;
   ifstream f2;
   f2.open("POKUS.TXT", ios::in);   //otevření pro čtení
               // nebo jenom:  f2.open("POKUS.TXT");
   if(f2.fail())
	 {
	  	cout  << "Chyba pri otevreni souboru";
      return ;
	 }
   f2 >> hod;
   cout << hod << endl;
   f2.close();
 }   
  

Pro neformátový zápis a čtení se používají funkce write(), read(), put(), get().



Design downloaded from Free Templates - your source for free web templates