// ex2_4_1.cpp #include <iostream.h> void main() { int n; cout << "inserisci un numero intero: "; cin >> n; char c; cout << "digita un carattere: "; cin >> c; cout << "i dati a disposizione sono i seguenti:" "\tn = " << n << "\tc = " << c; }
gli statement cin >> n
e cin >> c
indicano alla macchina di fermare l'esecuzione del programma e aspettare che l'utente inserisca dati di tipo, rispettivamente, int e char. La sintassi è la stessa del cout
, sostituendo il <<
con >>
; ovviamente non è possibile utilizzare una espressione del tipo cin >> "ciao!"
perché priva di significato: il dato in entrata deve essere immesso dall'utente e salvato in una variabile, non in una sequenza testuale. Come per il cout
, anche per il cin
è possibile concatenare le richieste di immissione dati, i quali vanno separati in fase di esecuzione da spaziature orizzontali o verticali. Si abbia il seguente:
// ex2_4_2.cpp #include <iostream.h> void main() { int a; int b; int c; cout << "scrivi tre numeri interi:\t"; cin >> a >> b >> c; cout << "\n" << a << "\t" << b << "\t" << c; }
l'output è il medesimo sia inserendo i tre numeri in fila separati da uno o più spazi (o dal tabulazioni orizzontali), sia che li si inserisca inviando un dato alla volta con il tasto return
.
Cosa succede se forniamo un carattere ove il programma si aspetta un int, o viceversa? Semplicemente si tratta di un errore commesso dall'utilizzatore del programma, e per ora non siamo in grado di prevenirlo in nessuna maniera; vedremo nel seguito qualche semplice tecnica per trattare gli errori di immissione dei dati; supponiamo al momento che l'utilizzatore dei nostri programmi si comporti esattamente come ci aspettiamo che faccia, cioè inserisca un numero intero se il dato verrà memorizzato in un int, un carattere per un char e un numero reale per un double. Si noti bene che il dato entrato tramite il cin
distrugge un eventuale dato preesistente nella variabile:
//ex2_4_5.cpp #include <iostream.h> void main() { int a = 5; cout << "a = " << a; cin >> a; cout << "a = " << a; }
dallo statement cin >> a
in poi, non v'è più traccia nella variabile a
del valore inizialmente assegnatole.