La libreria <ostream> definisce le classi e i meccanismi utilizzati per inviare dati verso uno
stream di output, come la console o i file.
È la libreria alla base di oggetti come cout, cerr e clog.
Non viene inclusa direttamente nella maggior parte dei programmi, perché è già parte di <iostream>.
Tuttavia è importante conoscerla per capire come funziona l output in C++.
1️⃣ Inclusione della libreria
Se necessario, si può includere direttamente:
#include <ostream>
Nella pratica, basta includere <iostream>, che la contiene già.
2️⃣ Contenuti principali della libreria
La libreria contiene le classi fondamentali per l output:
| Classe / Oggetto | Descrizione |
|---|---|
ostream | Classe base per tutti gli stream di output |
basic_ostream | Versione template di ostream |
operator<< | Operatore di inserimento (usato da cout) |
flush() | Svuota immediatamente il buffer |
put() | Scrive un singolo carattere |
write() | Scrive una sequenza di byte |
3️⃣ L operatore di inserimento <<
L operatore << permette di inviare dati allo stream di output.
È l operatore che permette di scrivere:
cout << "Ciao mondo!";
Può concatenare più valori:
cout << "Somma = " << 4 + 5 << "\n";
4️⃣ flush() e buffer dell output
Gli stream usano un buffer per ottimizzare la scrittura. Per forzare l output immediato si usa:
cout << "Salvataggio..." << flush;
endl manda a capo e fa anche flush automatico.
5️⃣ put() e write()
✔ put()
Scrive un singolo carattere.
cout.put('A');
✔ write()
Scrive una sequenza di byte.
const char* txt = "Ciao";
cout.write(txt, 4); // stampa "Ciao"
6️⃣ Output con cerr e clog
Gli stream di errore derivano da ostream:
| Oggetto | Descrizione |
|---|---|
cerr | Output per errori, non bufferizzato |
clog | Output per log, bufferizzato |
7️⃣ Esempio completo
#include <iostream>
using namespace std;
int main() {
cout << "Messaggio normale" << endl;
cerr << "Messaggio di errore" << endl;
clog << "Messaggio di log" << endl;
cout.put('A');
cout << endl;
const char* txt = "Hello";
cout.write(txt, 5);
return 0;
}
LABORATORIO
Uso degli stream di output
In questo laboratorio esplorerai gli strumenti messi a disposizione dalla libreria
<ostream>, imparando a usare correttamente l operatore di inserimento,
la gestione del buffer e le funzioni put e write.
- Ambiente di sviluppo C++
- Libreria
<iostream>(che include <ostream>)
1 Stampa con operator<<
Crea un programma che usa l operatore << per stampare 3 valori concatenati.
cout << "Risultato: " << 10 << ", " << 20 << ", " << 30;
2 Uso di put()
Stampa la parola "CIAO" un carattere alla volta usando put().
cout.put('C');
cout.put('I');
cout.put('A');
cout.put('O');
3 Scrittura con write()
Scrivi con write() i primi 3 caratteri della parola "Programma".
const char* s = "Programma";
cout.write(s, 3); // stampa "Pro"
4 Esercizi
- Stampa un messaggio usando
cloge verifica che sia bufferizzato. - Usa
flushper forzare l output immediato. - Combina
setw(da <iomanip>) con ostream per creare una tabella. - Scrivi un vettore di caratteri usando un ciclo e
put().