Input / output di base C ++

Le librerie standard C ++ forniscono un ampio set di funzionalità di input / output che vedremo nei capitoli successivi. Questo capitolo discuterà le operazioni di I / O molto semplici e più comuni richieste per la programmazione C ++.

L'I / O C ++ si verifica nei flussi, che sono sequenze di byte. Se i byte fluiscono da un dispositivo come una tastiera, un'unità disco o una connessione di rete ecc. Alla memoria principale, viene chiamatoinput operation e se i byte fluiscono dalla memoria principale a un dispositivo come uno schermo, una stampante, un'unità disco o una connessione di rete, ecc., questo è chiamato output operation.

File di intestazione della libreria di I / O

Ci sono i seguenti file di intestazione importanti per i programmi C ++:

Suor n File di intestazione, funzione e descrizione
1

<iostream>

Questo file definisce il cin, cout, cerr e clog oggetti, che corrispondono rispettivamente al flusso di input standard, al flusso di output standard, al flusso di errore standard senza buffer e al flusso di errore standard bufferizzato.

2

<iomanip>

Questo file dichiara servizi utili per eseguire I / O formattato con i cosiddetti manipolatori di flussi parametrizzati, come setw e setprecision.

3

<fstream>

Questo file dichiara i servizi per l'elaborazione dei file controllata dall'utente. Ne discuteremo in dettaglio nel capitolo relativo a File e stream.

The Standard Output Stream (cout)

L'oggetto predefinito cout è un'istanza di ostreamclasse. Si dice che l'oggetto cout sia "connesso al" dispositivo di output standard, che di solito è lo schermo di visualizzazione. Ilcout viene utilizzato insieme all'operatore di inserimento del flusso, scritto come << che sono due meno di segni come mostrato nell'esempio seguente.

#include <iostream>
 
using namespace std;
 
int main() {
   char str[] = "Hello C++";
 
   cout << "Value of str is : " << str << endl;
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Value of str is : Hello C++

Il compilatore C ++ determina anche il tipo di dati della variabile da emettere e seleziona l'operatore di inserimento del flusso appropriato per visualizzare il valore. L'operatore << viene sovraccaricato per produrre elementi di dati di tipi incorporati integer, float, double, stringhe e valori del puntatore.

L'operatore di inserimento << può essere utilizzato più di una volta in una singola istruzione come mostrato sopra e endl viene utilizzato per aggiungere una nuova riga alla fine della riga.

Lo Standard Input Stream (cin)

L'oggetto predefinito cin è un'istanza di istreamclasse. Si dice che l'oggetto cin sia collegato al dispositivo di input standard, che di solito è la tastiera. Ilcin viene utilizzato insieme all'operatore di estrazione del flusso, scritto come >>, due segni maggiori di due come mostrato nell'esempio seguente.

#include <iostream>
 
using namespace std;
 
int main() {
   char name[50];
 
   cout << "Please enter your name: ";
   cin >> name;
   cout << "Your name is: " << name << endl;
 
}

Quando il codice sopra viene compilato ed eseguito, ti verrà chiesto di inserire un nome. Inserisci un valore e poi premi invio per vedere il seguente risultato:

Please enter your name: cplusplus
Your name is: cplusplus

Il compilatore C ++ determina anche il tipo di dati del valore immesso e seleziona l'operatore di estrazione del flusso appropriato per estrarre il valore e memorizzarlo nelle variabili date.

L'operatore di estrazione del flusso >> può essere utilizzato più di una volta in una singola istruzione. Per richiedere più di un dato è possibile utilizzare:

cin >> name >> age;

Questo sarà equivalente alle seguenti due affermazioni:

cin >> name;
cin >> age;

The Standard Error Stream (cerr)

L'oggetto predefinito cerr è un'istanza di ostreamclasse. Si dice che l'oggetto cerr sia collegato al dispositivo di errore standard, che è anche uno schermo di visualizzazione ma l'oggettocerr non è bufferizzato e ogni inserimento di flusso in cerr fa apparire immediatamente il suo output.

Il cerr viene utilizzato anche insieme all'operatore di inserimento del flusso come mostrato nell'esempio seguente.

#include <iostream>
 
using namespace std;
 
int main() {
   char str[] = "Unable to read....";
 
   cerr << "Error message : " << str << endl;
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Error message : Unable to read....

Il flusso di log standard (clog)

L'oggetto predefinito clog è un'istanza di ostreamclasse. Si dice che l'oggetto intasamento sia collegato al dispositivo di errore standard, che è anche uno schermo di visualizzazione ma l'oggettoclogè tamponato. Ciò significa che ogni inserimento da intasare potrebbe far sì che il suo output venga mantenuto in un buffer finché il buffer non viene riempito o finché il buffer non viene svuotato.

Il clog viene utilizzato anche insieme all'operatore di inserimento del flusso come mostrato nell'esempio seguente.

#include <iostream>
 
using namespace std;
 
int main() {
   char str[] = "Unable to read....";
 
   clog << "Error message : " << str << endl;
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Error message : Unable to read....

Non saresti in grado di vedere alcuna differenza in cout, cerr e clog con questi piccoli esempi, ma durante la scrittura e l'esecuzione di grandi programmi la differenza diventa ovvia. Quindi è buona norma visualizzare i messaggi di errore utilizzando il flusso cerr e durante la visualizzazione di altri messaggi di registro dovrebbe essere utilizzato clog.