De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Tinpro015b-les5 Invoer en Uitvoer.

Verwante presentaties


Presentatie over: "Tinpro015b-les5 Invoer en Uitvoer."— Transcript van de presentatie:

1 tinpro015b-les5 Invoer en Uitvoer

2 Standaard “Streams” #include <iostream> using namespace std;
iostream  >> invoeroperator << uitvoeroperator cin standaard-invoerstream cout standaard-uitvoerstream cerr standaard-fout-uitvoerstream clog standaard-fout-uitvoerstream gebufferd

3 Standaard “Streams” type van cin is een klasse istream
type van cout,cerr,clog is een klasse ostream afgeleide klasse van de basisklasse ios

4 Uitvoer uitvoer heet insertie bij C++
Alles voor cout geldt ook voor files << operator uitvoer (links-associatief) cout << ch << ‘=‘ is identiek aan (cout.operator<<(ch)).operator<<(‘=‘)

5 Ingebouwde inserter-types
Het type wat volgt op cout << wordt inserter-type genoemd char , short , int , long ,const char* , string, float,double,long double, void* (hex-adres) Naast << operator de ostream lidfuncties put en write (primitieve uitvoer) cout.put(ch) ( 1 karakter) cout.write(a,n) ( n karakters schrijven vanaf adres a

6 Manipulatoren voor uitvoer
#include <iomanip> cout << f cout << setw(15) << setprecision(10) << .. veldbreedte = 15 kar ( totaal aantal kar) precisie = 10 kar ( aantal kar na komma)

7 Manipulatoren voor uitvoer
manipulatoren uitvoer: setw(n),setfil(ch),dec,hex,oct,flush,endl,ends, setprecision(n),boolalpha,noboolapha, showbase,showpoint,showpoint,uppercase, nouppercase,left,right,internal,fixed,scientific cout << hex << i <<‘ ’ << j ( i en j hexadecimaal afdrukken) cout << setw(15) <<i << j ( alleen voor i wordt de veldbreedte 15)

8 Invoer invoer heet extractie bij C++
Alles voor cin geldt ook voor files >> operator invoer (links-associatief) cin >> i >> j is identiek aan (cin.operator>>(i)).operator>>(j)

9 Invoer primitieve invoer:
cin.get(ch) of ch= cin.get() (lees 1 karakter) cin.putback(ch) (kar terug in buffer) cin.get(str,40) (leest 39 karakters) char str[40] ; cin.read(str,40) (leest 40 karakters) string s; cin >>s (leest 1e string in) getline(cin,s) (leest hele regel in) char str[30]; cin.getline(str,30); cout << str << endl; ( C-stijl , leest 29 karakters)

10 Ingebouwde extractor-types
De volgende ingebouwde extractor-types: Char , short , int , long char* ,string , float , double , long double , bool

11 Manipulatoren voor invoer
De volgende invoer-manipulatoren: setw(n) , setfill(ch) , noskipws , dec ,hex ,oct, boolalpha, noboolalpha char ch; cin >> ch; (alle spaties worden weggelezen) char >> noskipws >> ch; ( ook spaties worden aan ch toegekend)

12 Files en streams Voor invoer files gebruiken we ifstream (afgeleide klasse van istream) Voor uitvoer files gebruiken we ofstream (afgeleide klasse van ostream)

13 Files en Streams ios istream ostream istringstream ifstream iostream
ofstream ostringstream fstream stringstream

14 Files en Streams Kopieer file aa naar file bb int main()
{ char ch; int n=0; ifstream ff(“aa”) ; if (!ff) { cout << “kan file aa niet openen.\n”; return 1} ofstream gg(“bb”); if (!gg) { cout << “kan file bb niet openen.\n”; return 1} while (ff.get(ch)) { gg.put(ch); n++ } cout << n << “karakters gecopieerd\n”; return 0; }

15 Files en Streams Het verband tussen de stream ff en de file aa wordt gelegd door openen ifstream ff(“aa”) de constructor van ifstream Bij tekstfiles worden 9 bytes gelezen <cr> Bij binaire files worden 10 bytes gelezen <cr><lf> Bij binaire files kan gcount() het aantal gelezen bytes opvragen

16 Openen en sluiten Streams
ifstream ff // declaratie zonder openen ff.open(“aa”) // open ff voor file aa ff.close() // sluit ff ff.open(“aaa”) // open ff voor file aaa tweede argument van lidfunctie open: fstream ff(“aa”. ios:: in | ios::out | ios::binary | ios::trunc | ios::app | ios::ate); de argumenten we combineren met | ( bit of)

17 Random Access Bij binaire mode kun je een file random benaderen
Identiek als bij een array Je kunt een willekeurige positie aanwijzen (random access) Bij tekstfiles begin je aan het begin van de file tot het einde toe ( sequential access) fseekg(i) wijst i-de byte aan van stream f bij lezen ( i = type long) fseekp(i) wijst i-de byte aan van stream f bij schrijven ( i = type long)

18 Random Access tweede argument seekg of seekp:
f.seekg(offset, ios::beg); f.seekg(offset, ios::cur); f.seekg(offset, ios::end); long posget = f.tellg(); posput = f.tellp(); leest huidige positie uit

19 Statusbits ios bevat statusbits, o.a. ios::failbit , ios::eofbit
de overeenkomstige functies heten fail() , eof() fail() is true als er iets mis gegaan is de functie f.clear() zet alle statusbits op 0 if (!ff) kan vervangen worden door if ( ff.fail()) maar niet door if (ff.eof()) wat niet gebruikt kan worden voor het testen van de aanwezigheid van de file

20 Huiswerk les 5 Maak de opgaven 8.1, 8.3, 8.8 uit C++ boek
Bestudeer Hfdst 9 uit C++boek


Download ppt "Tinpro015b-les5 Invoer en Uitvoer."

Verwante presentaties


Ads door Google