E-gradiva > Računalništvo > Programiranje > Načrtovanje in razvoj programskih aplikacij > Vhodno-Izhodni tokovi

Prijava

Vhodno-izhodni tokovi

 

 

Vhodne in izhodne operacije se v jeziku C++ odvijajo v tokovih (stream).

 

Tok je zaporedje zlogov, "teče" iz enote (tipkovnica, disk, mreža) v pomnilnik. Pri izhodni operaciji pa zlogi "tečejo"  iz pomnilnika v enoto.

 

Za delo z datotekami imamo na voljo naslednje knjižnice:

 

 

Vhodno-izhodni tokovi

 

Enote, iz katerih beremo in na katere pišemo podatke (cout, cerr, clog in cin) so v knjižnici <iostream.h> definirane kot objekti. Enote cout, cerr in clog so objekti tipa ostream, enota cin pa je objekt tipa istream. Ti objekti so povezani s standardnimi enotami računalnika: cout s standardnim izhodom (ponavadi zaslon), cin s standardnim vhodom (ponavadi tipkovnica) cerr in clog pa s standardno enoto za napake (prav tako ponavadi zaslon).

 

 

Prekriti operator >> za branje vrne vrednost, ki jo želimo prebrati. Kadar pa na enoti, iz katere beremo, naleti na konec datoteke, vrne 0 (nepravilno). Konec datoteke je različen od sistema. Na sistemih DOS  in MS Windows ga vnesemo s pritiskom na tipko <Cntrl-Z> na sistemih Unix pa s pritiskom <Ctrl-D>.

 

Primer: izračun vsote števil

#include <iostream>
using namespace std;

void
main()
{


int
stevilo, vsota = 0;

cout << "Vnesi celo število (ali end -of file za konec):";

while
(cin >> stevilo)
{


vsota += stevilo;

cout <<"Vnesi celo število (ali end -of file za konec):";
}


cout <<" Vsota števil je: " << vsota;

system("pause");
}



Pri izpisu se tok znakov ne zapiše takoj v enoto, na katero pišemo, temveč se shranjuje v vmesnik (buffer). Podobno se zgodi pri branju iz enote. Praznenje vmesnika (flushing) je operacija, ki povzroči da se vsi znaki, ki so trenutno v vmesniku zapišejo v enoto.