C++ Ingresso/uscita di base: esempio Cout, Cin, Cerr
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, dovresti indicare dove I / O avverrà 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:
Spiegazione del codice:
- 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 carattere denominata Welcome per contenere la stringa Welcome to 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. Normalmente viene utilizzato insieme all'operatore di estrazione (>>). L'oggetto di estrazione è responsabile dell'estrazione dei dati immessi tramite la 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:
Spiegazione del codice:
- 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:
Spiegazione del codice:
- 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:
Spiegazione del codice:
- 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
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; }
Sintesi
- Le attività di input e output In C++ vengono eseguiti tramite sequenza di byte. I byte sono chiamati flussi.
- In un flusso di input i byte fluiscono dal dispositivo di input come una tastiera alla memoria principale.
- In un flusso di output, i byte vengono trasferiti dalla memoria principale a un dispositivo di output come un monitor.
- L'oggetto cin è un'istanza della classe istream. Legge l'input da un dispositivo di input come la tastiera.
- L'oggetto cout è un'istanza della classe ostream. Produce output su dispositivi di output come il monitor.
- L'oggetto cerr è un'istanza della classe ostream. Visualizza gli oggetti di errore sul monitor.
- L'oggetto clog è un'istanza della classe ostream. Visualizza messaggi di errore sui dispositivi di output.
- L'oggetto clog memorizza nel buffer i messaggi di errore, mentre l'oggetto cerr no.