150 likes | 227 Views
Laboratorio di Programmazione. Lezione VIII. 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!.
E N D
Laboratorio di Programmazione Lezione VIII
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! Streams formattati
>> 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 Lettura di uno stream Esempio: int x; cin >> x; cin è lo stream standard di input (tastiera)
Esempio: int x,y; cin >> x >> y; Cascata di letture in ordine da Sinistra a Destra Lettura di uno stream Stream cin: 3 5 1 … x = ? y = ?
Esempio: int x,y; cin >> x >> y; Cascata di letture in ordine da Sinistra a Destra Lettura di uno stream x Stream cin: 3 5 1 … x = 3 y = ? Il numero 3 è consumato dallo stream
Esempio: int x,y; cin >> x >> y; Cascata di letture in ordine da Sinistra a Destra Lettura di uno stream x x Stream cin: 3 5 1 … x = 3 y = 5 Le prossime letture partiranno dal numero 1.
Esempio: int x; cin >> x; Esempio: char x,y; cin >> x >> y; Tipo di dato letto cin = -1 cin = -1 x = -1 x = ‘-’ y = ‘1’
<< 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 Scrittura di uno stream Esempio: int x=1; cout << x; cout è lo stream standard di output (monitor)
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 Esempio: int x=1; int y=2; cout << x + y; Stream cout: 3 Scrittura di uno 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)