Cosa sono gli stream in 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 input: questo è un tipo di flusso in cui i byte fluiscono da un dispositivo come una tastiera alla memoria principale.
- Stream di output: questo è un tipo di flusso in cui i byte scorrono nella direzione opposta, cioè dalla memoria principale quindi al dispositivo come lo schermo di visualizzazione.
In questo tutorial C ++ imparerai:
- Cosa sono gli stream in C ++?
- Come funzionano gli stream?
- Tabella delle funzioni
- File di intestazione C ++ per input / output
- std :: cout
- std :: cin
- std :: cerr
- std :: clog
- Gestione degli errori con i flussi di I / O:
Come funzionano gli stream?
I flussi C ++ funzionano come segue:
- Innanzitutto, un flusso viene inizializzato con il tipo corretto.
- Successivamente, è necessario indicare dove avverrà l'I / O utilizzando i puntatori get / put.
- Dopo aver raggiunto la posizione corretta in un flusso, è possibile eseguire attività di input e output utilizzando rispettivamente gli operatori >> e <<.
Tabella delle funzioni
Le seguenti sono le funzioni fornite nel file di intestazione stream.h:
Classe | Funzioni |
Filebuf | Imposta i buffer di file in lettura / scrittura. Ha le funzioni close () e open () al suo interno |
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. |
ofstream | È una classe di flusso di file di output per fornire operazioni di output. |
fstream | È una classe di flusso di input / output. Supporta operazioni di input / output simultanee. |
File di intestazione C ++ per input / output
C ++ fornisce tre librerie dotate di funzioni per eseguire attività di input / output di base. Loro includono:
- Iostream: è un acronimo per flusso di input / output standard. Questo file di intestazione viene fornito con le definizioni per oggetti come cin / cout / cerr.
- Iomanip: è un acronimo per 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 che vengono letti dal file come input o che vengono scritti in un file, l'output.
Le parole chiave cin e cout sono molto popolari in C ++. Sono usati rispettivamente per prendere input e stampare output. Per utilizzarli, è necessario includere il file di intestazione iostream nel programma. Il motivo è che sono definiti in quel file di intestazione. La mancata inclusione del file di intestazione iostream genererà un errore. Ciò risulta da un errore del compilatore C ++ nel comprendere il significato delle parole chiave.
Gli oggetti principali definiti nel file di intestazione iostream sono cin, cout, cerr e clog. Parliamone.
std :: cout
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:
#includeusing 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.
- Includere lo spazio dei nomi std in modo da non doverlo chiamare quando si usano 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 benvenuto per contenere la stringa Benvenuto in Guru99.
- Stampa il valore della stringa di benvenuto sulla console. Endl è una parola chiave C ++ che significa end line. Sposta il cursore per iniziare a stampare il testo sulla riga successiva.
- Il programma deve restituire un valore in caso di corretta esecuzione.
- 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'operatore di estrazione (>>). L'oggetto di estrazione è responsabile dell'estrazione dei dati inseriti tramite la tastiera dall'oggetto cin.
Esempio:
L'esempio seguente mostra come utilizzare la parola chiave cin in C ++:
#includeusing 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:
- Includere il file di intestazione 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.
- Dichiarare una variabile intera denominata numero.
- Stampa un messaggio sullo schermo che richiede all'utente di inserire un numero.
- Leggere il valore inserito dall'utente sulla console dalla tastiera.
- 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 forma il flusso di errore standard per l'emissione di errori in C ++. Cerr è un'istanza della classe ostream. L'oggetto cerr è senza buffer. Ciò significa che viene utilizzato quando un messaggio di errore deve essere visualizzato immediatamente.
Poiché è senza buffer, non memorizza il messaggio di errore per una visualizzazione successiva. Viene utilizzato insieme all'operatore di inserimento del flusso (<<).
Esempio:
#includeusing namespace std;int main() {cerr << "An Error occurred!";return 0;}
Produzione:
Ecco uno screenshot del codice:
Spiegazione del codice:
- Includere il file di intestazione iostream in cui è stato definito l'oggetto cerr.
- Includere lo spazio dei nomi std in modo da non doverlo chiamare quando si usano 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.
- Usa l'oggetto cerr per stampare un errore sulla console.
- Il programma deve restituire un valore in caso di corretta esecuzione.
- Fine del corpo della funzione principale.
std :: clog
L'oggetto clog è un'istanza della classe ostream. Viene utilizzato per mostrare gli 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 / scaricato. Viene utilizzato insieme all'operatore di inserimento del flusso (<<).
Esempio:
#includeusing namespace std;int main() {clog << "An Error occurred!";return 0;}
Produzione:
Ecco uno screenshot del codice:
Spiegazione del codice:
- Compreso il file di intestazione iostream in cui è definito l'oggetto clog.
- Compreso lo spazio dei nomi std in modo che possiamo usare le sue classi senza chiamarlo.
- Chiamare la funzione main (). La logica del programma dovrebbe essere aggiunta all'interno del suo corpo. La {segna l'inizio del corpo della funzione.
- Utilizzare l'oggetto clog per stampare un errore sullo standard output, il monitor.
- Il programma deve restituire un valore dopo il completamento con successo.
- La fine del corpo della funzione main ().
Gestione degli errori con i flussi di I / O:
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 immesso un numero intero valido, eseguire questa operazione:
int p;if ( cin >> p ){cout << "Enter valid number" << endl;}
Sommario
- Le attività di input e output in C ++ vengono eseguite 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 dalla memoria principale quindi 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 i messaggi di errore sui dispositivi di output.
- L'oggetto clog memorizza i messaggi di errore, mentre l'oggetto cerr no.