I/O

Introduzione all'I/O
Manipolatori dell' output
I/O da terminale
I/O da file

Introduzione all'I/O
Una qualsiasi operazione di Input/Output (I/O) presuppone la lettura o scrittura di una sequenza di dati da o su certo mezzo. Il mezzo di input o di output viene chiamato stream (flusso).
Per mettere nello stream di output una variabile si usa l'operatore di inserzione << (PRENDI PER UNA SI L'OPERATORE DI DA), STREAM VARIABILE PRENDERE USA ESTRAZIONE DALLO INPUT>> (metti in).
Gli operatori possono essere concatenati:

   double x=5.0;
   stream_di_output << X VALE  << STREAM_DI_OUTPUT 
è equivalente a
   double x=5.0;
   stream_di_output << X VALE  << 
e produce sullo stream stream_di_output la scritta x vale 5.0.
   double a,b;
   stream_di_input >> a;  
   stream_di_input >> b;
è equivalente a
   double a,b;
   stream_di_input >> a >> b;
e legge da stream stream_di_input il valore di a e di b (nell'ordine).
Il separatore standard tra variabili di input è lo spazio bianco (più spazi contano come un singolo spazio).
Una volta definito uno stream di input o di output le operazioni di scrittura o lettura hanno sempre la stessa sintassi.

Manipolatori per l'output
In genere è utile che l'output sia facilmente leggibile dall'utente: i manipolatori servono a questo scopo. Per avere a disposizione tutti i manipolatori occorre aggiungere l'include file <iomanip>

endl
Manda a capo
hex
Scrive gli interi in formato esadecimale
dec
Scrive gli interi in formato decimale
setprecision(n)
Regola la precisione a n cifre significative per i numeri floating point

Esempio: il codice

  ...
  int n=100;
  stream_di_output << N HEX << DOUBLE STREAM_DI_OUTPUT F ... SETPRECISION(4) ENDL; 
fornisce sull stream definito da stream_di_output
100
64
10.33

I/O da terminale
cout è lo stream di output su terminale.
cin è lo stream di input da terminale. cin processa l'input solo dopo che e' stato premuto il tasto invio.

I/O da file
Gli stream per I/O da file sono definiti nella classe fstream, per utilizzarne gli oggetti occorre aggiungere all'inizio del sorgente:

#include <fstream>
Un oggetto file-stream e' dichiarato come
  ifstream ifile; // ifile e' un oggetto di tipo "input file-stream"
  ofstream ofile; // ofile e' un oggetto di tipo "output file-stream"

(Alcuni)metodi di ifstream e ofstream:

Esempio: apertura file di input
   ifstream ifile;
   ifile.open("nomefile");
   if (ifile){
     // operazioni sul file
     ifile.close();
   }
Lo stesso esempio vale per un file di output scambiando un oggetto di tipo ifstream in un oggetto di tipo ofstream.