Apertura esplicita di un file ofstream fout; fout.open(“amici.dat”, ios::out); ifstream fin; fin.open(“amici.dat”, ios::in); 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)”; } 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