Lezione VIII
-
Upload
sarah-fields -
Category
Documents
-
view
24 -
download
1
description
Transcript of Lezione VIII
Lezione VIII
Laboratorio di Programmazione
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 streamEsempio: 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 streamEsempio: int x,y;
cin >> x >> y;
Cascata di letture in ordine da Sinistra a Destra
Stream cin: 33 5 1 …
x = 3
y = ?
x
Il numero 3 è consumato dallo stream
Lettura di uno streamEsempio: int x,y;
cin >> x >> y;
Cascata di letture in ordine da Sinistra a Destra
Stream cin: 3 5 1 …
x = 3
y = 5
x
Le prossime letture partiranno dal numero 1.
x
Tipo di dato letto
Esempio: int x;
cin >> x;
cin = -1
x = -1
Esempio: char x,y;
cin >> x >> y;
x = ‘-’
y = ‘1’
cin = -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 streamEsempio: 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.
fstream
iostream
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)