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:

  1. Innanzitutto, un flusso viene inizializzato con il tipo corretto.
  2. Successivamente, dovresti indicare dove I / O avverrà utilizzando i puntatori get/put.
  3. 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:

std::out

Ecco uno screenshot del codice:

std::out

Spiegazione del codice:

  1. Includere il file di intestazione iostream in cui è definito l'oggetto cout.
  2. Includi lo spazio dei nomi std in modo da non doverlo chiamare quando utilizziamo le sue classi.
  3. 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.
  4. Crea una variabile di carattere denominata Welcome per contenere la stringa Welcome to Guru99.
  5. 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.
  6. Il programma deve restituire valore dopo l'esecuzione riuscita.
  7. 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:

std::cin

Ecco uno screenshot del codice:

std::cin

Spiegazione del codice:

  1. Includi il file header iostream nel nostro programma. L'oggetto cin è definito in questo file di intestazione.
  2. Includere lo spazio dei nomi std per utilizzare le sue classi. Non dovrai chiamare std quando usi le sue classi.
  3. Chiama la funzione main(). Il codice del programma dovrebbe essere aggiunto all'interno del suo corpo.
  4. L'inizio del corpo del programma.
  5. Dichiara un file variabile intera numero nominato.
  6. Stampa un messaggio sullo schermo chiedendo all'utente di inserire un numero.
  7. Leggere dalla tastiera il valore inserito dall'utente sulla console.
  8. Stampa il valore letto sopra sulla console insieme ad altro testo.
  9. Il programma dovrebbe restituire un valore se viene eseguito correttamente.
  10. 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:

std::cerr

Ecco uno screenshot del codice:

std::cerr

Spiegazione del codice:

  1. Include il file di intestazione iostream in cui è stato definito l'oggetto cerr.
  2. Includi lo spazio dei nomi std in modo da non doverlo chiamare quando utilizziamo le sue classi.
  3. 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.
  4. Utilizzare l'oggetto cerr per stampare un errore sulla console.
  5. Il programma deve restituire un valore dopo l'esecuzione riuscita.
  6. 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:

std::clog

Ecco uno screenshot del codice:

std::clog

Spiegazione del codice:

  1. Incluso il file header iostream in cui è definito l'oggetto clog.
  2. Incluso lo spazio dei nomi std in modo da poter utilizzare le sue classi senza chiamarlo.
  3. Chiamando la funzione main(). La logica del programma dovrebbe essere aggiunta all'interno del suo corpo. Il { segna l'inizio del corpo della funzione.
  4. Utilizzare l'oggetto clog per stampare un errore sull'output standard, il monitor.
  5. Il programma deve restituire un valore in caso di completamento positivo.
  6. 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.