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.
| endl | konec řádku, zároveň vyprázdní buffer |
| setw(int) | minimální počet znaků pro vypsání hodnoty |
| dec oct hex | vý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, scientific | nastavení 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()...