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.

Standardní vstup a výstup

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.

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
setw(int)minimální počet znaků pro vypsání hodnoty
dec oct hexvýpis čísla v desítkové, osmičkové nebo š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
fixed, scientificnastavení pro zobrazení reálných čísel



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>
 #include <iostream>
 
 using namespace std; 
 
 int main()
 {
   //----------- jednoduché ukládání do souboru použitím operátora <<
   int hod = 123;
   fstream f1;
   
   f1.open("POKUS.TXT", ios::out);   //otevření pro zápis
      // nebo pro deklaraci ofstream f1 staci jenom:  f1.open("POKUS.TXT");
   if(f1.fail())
	 {
	  	cout  << "Chyba pri otevreni souboru";
      return -1;
	 }
   
   f1 << hod;
   cout  << "Hodnota ulozena do souboru\n"  << endl;
   f1.close();
   
   //---------- jednoduché čtení ze souboru použitím operátora >>
   hod = 0;
   fstream f2;
   
   f2.open("POKUS.TXT", ios::in);   //otevření pro čtení
      // nebo pro deklaraci ifstream f2 staci jenom:  f2.open("POKUS.TXT");
   if(f2.fail())
	 {
	  	cout  << "Chyba pri otevreni souboru";
      return -1;
	 }
   
   f2 >> hod;
   cout << "Nacteno ze souboru:" << hod << endl;
   f2.close();
   return 0;
 }   
  

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



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