Lezione VIII Laboratorio di Programmazione
Streams formattati In C è sfruttata linformazione riguardo al tipo di un certo dato per impostare la formattazione sullo stream. Es. Il char A e lint 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 ) 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: … x = ? y = ?
Lettura di uno stream Esempio: int x,y; cin >> x >> y; Cascata di letture in ordine da Sinistra a Destra 3 Stream cin: … x = 3 y = ? x 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 = 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 ) 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: 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 loggetto 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 lultimo 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 leventuale file con // lo stesso nome if (fileout.fail( ) ) { …} // controllo errori di apertura ……… // operazioni con loggetto 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)