...

lucidi

by user

on
Category: Documents
28

views

Report

Comments

Description

Transcript

lucidi
Laboratorio di Programmazione
Lezione VIII
Streams formattati
In C è sfruttata l’informazione riguardo al
tipo di un certo dato per impostare la
formattazione sullo stream.
Es. Il char ‘A’ e l’int 65 in memoria sono
rappresentati allo stesso modo, ma vengono
convertiti diversamente sullo stream!
Lettura di uno stream
>> operatore di estrazione per operazioni di lettura (input)
(contenuto nella libreria di funzioni <iostream>)
Sintassi: stream_utilizzato >> variabile_tipata
Semantica: legge da stream_utilizzato (o attende finchè arrivano dati)
assegna la lettura alla variabile_tipata
Esempio:
int x;
cin >> x;
cin è lo stream standard di input (tastiera)
Lettura di uno stream
Esempio:
int x,y;
cin >> x >> y;
Cascata di letture in ordine da Sinistra a Destra
Stream cin: 3 5 1 …
x=?
y=?
Lettura di uno stream
Esempio:
int x,y;
cin >> x >> y;
Cascata di letture in ordine da Sinistra a Destra
Stream cin:x
351…
x=3
y=?
Il numero 3 è consumato dallo stream
Lettura di uno stream
Esempio:
int x,y;
cin >> x >> y;
Cascata di letture in ordine da Sinistra a Destra
Stream cin:x
3x
51…
x=3
y=5
Le prossime letture partiranno dal numero 1.
Tipo di dato letto
Esempio:
int x;
cin >> x;
cin = -1
x = -1
Esempio:
char x,y;
cin >> x >> y;
cin = -1
x = ‘-’
y = ‘1’
Scrittura di uno stream
<< operatore di inserimento per operazioni di scrittura (output)
(contenuto nella libreria di funzioni <iostream>)
Sintassi: stream_utilizzato << espressione_tipata
Semantica: immette sullo stream_utilizzato la valutazione della
espressione_tipata
Esempio:
int x=1;
cout << x;
cout è lo stream standard di output (monitor)
Scrittura di uno stream
Esempio:
int x=1;
int y=2;
cout << x + y;
Stream cout: 3
Esempio con cascata di scritture (associativo a sinistra):
int x=1;
int y=2;
cout << x << ‘ ’ << y << endl << x + y << endl;
Stream cout: 1 2
3
endl
dà il comando di inviare un “a capo” sullo stream
I Files in C++
I files sono modellati come streams.
iostream
fstream
La classe fstream conprende la iostream  basta #include fstream
I Files in C++
Nella classe fstream ci sono due classi interessanti:
ifstream = input file stream
ofstream = output file stream.
La prima classe è usata per leggere, mentre la seconda per scrivere.
Molti metodi e attributi sono comuni, altri specifici della classe.
Ifstream:Apertura e chiusura files
char nomefile []=“prova.txt”;
ifstream filein (nomefile);
// apre il file in lettura
if (filein.fail( ) ) { …}
// controllo errori di apertura
………
// operazioni con l’oggetto filein
filein.close ( );
// chiude il file
Ifstream: lettura dati
* filein >> variabile_tipata; (cfr. cin >> var)
* char ch;
ch = filein.get ();
(cfr. ch = cin.get( ) )
** filein.eof ( ) : funzione booleana vera se si è letto l’ultimo carattere
del file (End Of File)
Ofstream:Apertura e chiusura files
char nomefile []=“prova.txt”;
ofstream fileout (nomefile);
// apre il file in scrittura
// e CANCELLA l’eventuale file con
// lo stesso nome
if (fileout.fail( ) ) { …}
// controllo errori di apertura
………
// operazioni con l’oggetto fileout
fileout.close ( );
// chiude il file
Ofstream: scrittura dati
* fileout << variabile_tipata; (cfr. cout << ‘a’)
* fileout.put (‘a’);
(cfr. cin.put(‘a’))
** fileout.eof ( ) è sempre falso (si possono sempre aggiungere bytes)
Fly UP