APERTURA ESPLICITA DI UN FILE ofstream fout; fout.open(“amici.dat”, ios::out); ifstream fin; fin.open(“amici.dat”, ios::in); ofstream fout; fout.open(“amici.dat”, ios::app); GESTIONE ERRORI SU FILE Nei programmi che utilizzano file è opportuno aggiungere opportuni controlli per eventuali errori che si possono presentare durante l’APERTURA DEL FILE: •FILE NON ESISTENTE •ERRORE PER UN ACCESSO NON CORRETTO ALLA MEMORIA DI MASSA … Esistono due modalità Prima modalità If(!nomestream){ cout<<“Errore nell’apertura del file ”<<endl;} Nell’esempio di lettura dell’archivio amici.dat if(!fin){ cout<<“Errore nell’apertura del file ”<<endl;} else { while(fin>>nome)//legge dal file fino alla fine { cout<<nome<<endl; //scrive a video nome } fin.close(); //chiude file } Return 0; Seconda modalità viene usato il metodo fail() che restituisce true se si verifica un errore su file if(nomestream.fail()){ cout<<“Errore nell’apertura del file ”<<endl;} else {…. } Controllo sulla fine del file 1° metodo while (fin>>variabile) 2° metodo Uso del metodo eof() Sintassi per uso eof() nomestream>> variabile while(!nomestream.eof()) {cout<<variabile<<endl; nomestream>>variabile; } Gestione di una rubrica telefonica con nome e telefono attraverso un menù Rubrica_telefonica.cpp Crea() Aggiungi() Visualizza() Ricerca (string n) la scrittura sulla rubrica avviene nome e telefono uno di seguito all’altro: archivio<<nome<<“ “<<telefono<<endl<<; //rubrica.cpp #include <iostream> #include <fstream> #include <string> using namespace std; const string NOMEARCH=“rubrica.dat”; //nome fisico dichiarato come costante fstream archivio; string nome, telefono; //Procedura che crea la rubrica Void crea() archivio.open(NOMEARCH.c_str(),ios::out); cout<<“inserisci un nome *=fine):”; cin>>nome; while(nome!=“*”){ cout<<“Telefono:”; cin>>telefono; archivio<<nome<<“ “<<telefono<<endl; cout<<“inserisci un altro nome(*=fine)”; cin>>nome; } Archivio.close(); } esercizi Realizza la procedura : •Aggiungi() che aggiunge un nome e un telefono •Visualizza() che mostra il contenuto del file •Ricerca() che dato un nome lo cerca e se presente stampa il telefono