C++ Ingresso/uscita di base: esempio Cout, Cin, Cerr
โก Riepilogo intelligente
C++ Le operazioni di input e output si basano su oggetti stream che trasferiscono i dati come sequenze di byte tra programmi e dispositivi, con cin che legge l'input da tastiera e cout, cerr e clog che scrivono l'output sullo schermo.

In cosa sono presenti gli stream C++?
C++ fornisce agli utenti una serie di librerie che possono utilizzare per eseguire attivitร di input/output. Queste attivitร vengono eseguite sotto forma di sequenze di byte, comunemente chiamate flussi.
I flussi sono divisi in due:
Tipi di flussi
- Flusso di ingresso: Questo รจ un tipo di flusso in cui i byte fluiscono da un dispositivo come una tastiera alla memoria principale.
- Flusso di output: Questo รจ un tipo di flusso in cui i byte scorrono nella direzione opposta, cioรจ dalla memoria principale al dispositivo come lo schermo.
Come funzionano gli stream?
C++ i flussi funzionano come segue:
- Innanzitutto, un flusso viene inizializzato con il tipo corretto.
- Successivamente, รจ necessario specificare dove avverrร l'I/O utilizzando i puntatori get/put.
- Dopo aver raggiunto la posizione corretta in uno stream, puoi eseguire attivitร di input e output utilizzando rispettivamente gli operatori >> e <<.
Tabella delle funzioni
Di seguito sono riportate le funzioni fornite nel file di intestazione stream.h:
| Classe | funzioni |
|---|---|
| Filebuff | Imposta i buffer dei file su lettura/scrittura. Contiene le funzioni close() e open() |
| fstreambase | ร la classe base per le classi ifstream, fstream e ofstream. Le sue operazioni sono comuni ai flussi di file. |
| ifstream | ร una classe di flusso di file di input per fornire operazioni di input. |
| di corrente | ร una classe del flusso di file di output per fornire operazioni di output. |
| fstream | ร una classe di flusso di input/output. Supporta operazioni di input/output simultanee. |
C++ File di intestazione per input/output
C++ fornisce tre librerie dotate di funzioni per eseguire attivitร di input/out di base. Includono:
- Iostream: ร l'acronimo di flusso di input/output standard. Questo file di intestazione contiene le definizioni per oggetti come cin/cout/cerr.
- Iomanip: ร l'acronimo di manipolatori di input/output. La libreria รจ dotata di funzioni che possono essere utilizzate per la manipolazione dei flussi. Contiene definizioni per oggetti come setw, setprecision e altri.
- Fstream: Questo รจ un file di intestazione per descrivere il flusso di file. Gestisce i dati letti dal file come input o scritti in un file, l'output.
Le parole chiave cin e cout sono molto popolari in C++. Sono utilizzati rispettivamente per prendere input e stampare output. Per usarli, devi includere il file di intestazione iostream nel tuo programma. Il motivo รจ che sono definiti in quel file di intestazione. Il mancato inserimento del file di intestazione iostream genererร un errore. Ciรฒ deriva da un fallimento da parte del C++ compilatore per comprendere il significato delle parole chiave.
Gli oggetti principali definiti nel file di intestazione iostream sono cin, cout, cerr e clog. Discutiamone.
std::out
L'oggetto cout รจ un'istanza della classe iostream. Viene utilizzato per produrre output su un dispositivo di output standard, che normalmente รจ lo schermo. Viene utilizzato insieme all'operatore di inserimento del flusso (<<).
Esempio
#include <iostream> using namespace std; int main() { char welcome[] = "Welcome to Guru99"; cout << welcome << endl; return 0; }
Produzione:
Ecco uno screenshot del codice:
Code Spiegazione:
- Includere il file di intestazione iostream in cui รจ definito l'oggetto cout.
- Includi lo spazio dei nomi std in modo da non doverlo chiamare quando utilizziamo le sue classi.
- Chiama la funzione main(). Il codice del programma dovrebbe essere aggiunto all'interno del suo corpo. La parentesi graffa di apertura { segna l'inizio del suo corpo.
- Crea una variabile di tipo carattere chiamata welcome per contenere la stringa Benvenuto a Guru99
- Stampa il valore della stringa di benvenuto sulla console. La fine รจ a C++ parola chiave che significa fine riga. Sposta il cursore per iniziare a stampare il testo sulla riga successiva.
- Il programma deve restituire valore dopo l'esecuzione riuscita.
- Fine del corpo della funzione main().
std::cin
L'oggetto cin รจ un'istanza della classe istream. Legge l'input dal dispositivo di input, la tastiera. Viene normalmente utilizzato insieme all'extracoperatore zione (>>). L'extracl'oggetto zione รจ responsabile di extracdati inseriti tramite tastiera dall'oggetto cin.
Esempio
L'esempio seguente mostra come utilizzare la parola chiave cin in C++:
#include <iostream> using namespace std; int main() { int number; cout << "Enter a number:"; cin >> number; cout << "\nYou entered: " << number; return 0; }
Produzione:
Ecco uno screenshot del codice:
Code Spiegazione:
- Includi il file header iostream nel nostro programma. L'oggetto cin รจ definito in questo file di intestazione.
- Includere lo spazio dei nomi std per utilizzare le sue classi. Non dovrai chiamare std quando usi le sue classi.
- Chiama la funzione main(). Il codice del programma dovrebbe essere aggiunto all'interno del suo corpo.
- L'inizio del corpo del programma.
- Dichiara un file variabile intera numero nominato.
- Stampa un messaggio sullo schermo chiedendo all'utente di inserire un numero.
- Leggere dalla tastiera il valore inserito dall'utente sulla console.
- Stampa il valore letto sopra sulla console insieme ad altro testo.
- Il programma dovrebbe restituire un valore se viene eseguito correttamente.
- Fine del corpo della funzione principale.
std::cerr
L'oggetto cerr costituisce il flusso di errori standard in cui visualizzare gli errori C++. Cerr รจ un'istanza della classe ostream. L'oggetto cerr รจ unbuffered. Ciรฒ significa che viene utilizzato quando un messaggio di errore deve essere visualizzato immediatamente.
Poichรฉ non รจ bufferizzato, non memorizza il messaggio di errore per una visualizzazione successiva. Viene utilizzato insieme all'operatore di inserimento del flusso (<<).
Esempio
#include <iostream> using namespace std; int main() { cerr << "An Error occurred!"; return 0; }
Produzione:
Ecco uno screenshot del codice:
Code Spiegazione:
- Include il file di intestazione iostream in cui รจ stato definito l'oggetto cerr.
- Includi lo spazio dei nomi std in modo da non doverlo chiamare quando utilizziamo le sue classi.
- Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta all'interno del suo corpo. La parentesi graffa di apertura segna l'inizio del corpo della funzione.
- Utilizzare l'oggetto cerr per stampare un errore sulla console.
- Il programma deve restituire un valore dopo l'esecuzione riuscita.
- Fine del corpo della funzione principale.
std::clog
L'oggetto clog รจ un'istanza della classe ostream. Viene utilizzato per mostrare errori sul display standard, il monitor. ร simile all'oggetto cerr, ma รจ bufferizzato. Poichรฉ รจ bufferizzato, memorizza il messaggio di errore nel buffer finchรฉ il buffer non viene riempito/svuotato. Viene utilizzato insieme all'operatore di inserimento del flusso (<<).
Esempio
#include <iostream> using namespace std; int main() { clog << "An Error occurred!"; return 0; }
Produzione:
Ecco uno screenshot del codice:
Code Spiegazione:
- Incluso il file header iostream in cui รจ definito l'oggetto clog.
- Incluso lo spazio dei nomi std in modo da poter utilizzare le sue classi senza chiamarlo.
- Chiamando la funzione main(). La logica del programma dovrebbe essere aggiunta all'interno del suo corpo. Il { segna l'inizio del corpo della funzione.
- Utilizzare l'oggetto clog per stampare un errore sull'output standard, il monitor.
- Il programma deve restituire un valore in caso di completamento positivo.
- La fine del corpo della funzione main().
Gestione degli errori con flussi di IO
Gli stessi oggetti di flusso segnalano anche se un'operazione รจ andata a buon fine, informazione che viene rivelata dai controlli dello stato del flusso.
Per verificare se uno stream รจ valido o meno, puoi usarlo come booleano.
Ecco un esempio:
ifstream file( "myfile.txt" ); if ( ! file ) { cout << "File NOT opened!" << endl; }
Per ottenere maggiori dettagli sullo stato del flusso, puoi utilizzare queste funzioni:
- good()- restituirร true se tutto va bene.
- bad()- restituirร true se si verifica un errore fatale.
- fail()- restituirร true dopo un'operazione di flusso non riuscita.
- eof()- restituirร true se raggiunge la fine di un file.
Per sapere se una particolare operazione di lettura/scrittura non รจ riuscita, testare il risultato della lettura.
Ad esempio, per verificare se l'utente ha inserito un numero intero valido, procedi come segue:
int p; if ( cin >> p ) { cout << "Enter valid number" << endl; }




