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)