Il C++ ha delle librerie molto potenti, in questo post cercherò di elencare i metodi più semplici per leggere, scrivere e controllare lo stato di un file.
Il C++ usa le seguenti classi per gestire l'input/output dei caratteri dei files.
ofstream: classe Stream per scrivere in un file
ifstream: classe Stream per leggere da un files
fstream: classe Stream per leggere e scrivere su un file
Queste classi sono dirette o indirette derivate della classe istream e ostream. Sappiamo ad esempio che cin è un oggetto della classe istream e cout è un oggetto della classe ostream. Potete leggere e scrivere sui files usando proprio cin e cout, ad esempio:
L'output del nostro file sarà:
N.B.: Tutti i flags possono essere combinati con l'operatore OR (|), ad esempio:
N.B.: La funzione close() viene chiamata comunque dal sistema alla chiusura del vostro programma. E' però buona norma chiudere sempre tutto quello che avete aperto!
Leggere da un file:
Questo esempio darà il seguente output:
Il C++ usa le seguenti classi per gestire l'input/output dei caratteri dei files.
ofstream: classe Stream per scrivere in un file
ifstream: classe Stream per leggere da un files
fstream: classe Stream per leggere e scrivere su un file
Queste classi sono dirette o indirette derivate della classe istream e ostream. Sappiamo ad esempio che cin è un oggetto della classe istream e cout è un oggetto della classe ostream. Potete leggere e scrivere sui files usando proprio cin e cout, ad esempio:
#include <iostream> #include <fstream> using namespace std; int main () { ofstream myfile; myfile.open ("example.txt"); myfile << "Scrivi questo sul file.\n"; myfile.close(); return 0; }
L'output del nostro file sarà:
[file example.txt] Scrivi questo sul file.Questo codice crea un file chiamato "example.txt" e inserisce al suo interno una frase nello stesso modo con cui avete sempre usato cout, con la differenza che usate il nome del file al posto della parola chiave.
Aprire un file
La prima operazione che dovete fare quando lavorate con l'input output dei files è l'apertura del file stesso. Per aprire un file usiamo la funzione open():open (filename, mode); // filename: nome del file che vogliamo aprire // mode: parametri aggiuntivi con i sottostanti flags (ne elenco solo 3)
ios::inApre il file per le operazioni di input.
ios::outApre il file per le operazioni di input.
ios::appTutte le operazioni di output avvengono alla fine del file, appendendo il contenuto di esse al file. Questo flag può essere usato per i files aperti in sola scrittura.
N.B.: Tutti i flags possono essere combinati con l'operatore OR (|), ad esempio:
ofstream myfile;
myfile.open ("example.bin", ios::out | ios::app | ios::binary);
Chiudere un file
Quando avete terminato le operazioni di input e/o output nel vostro file è necessario "chiudere" il file stesso. Per fare questo chiamate la funzioneclose();
in questo modo: myfile.close(); // chiude il vostro file
N.B.: La funzione close() viene chiamata comunque dal sistema alla chiusura del vostro programma. E' però buona norma chiudere sempre tutto quello che avete aperto!
File di testo
Scrivere in un file://
Scrivere in un file#include <iostream> #include <fstream> using namespace std; int main () { ofstream myfile ("example.txt"); if (myfile.is_open()) { myfile << "This is a line.\n"; myfile << "This is another line.\n"; myfile.close(); } else cout << "Unable to open file"; return 0; }
Leggere da un file:
//
Leggere da un file#include <iostream> #include <fstream> #include <string> using namespace std; int main () { string line; ifstream myfile ("example.txt"); if (myfile.is_open()) { while ( myfile.good() ) { getline (myfile,line); cout << line << endl; } myfile.close(); } else cout << "Unable to open file"; return 0; }
Questo esempio darà il seguente output:
This is a line. This is another line.
Flags di controllo
In aggiunta a good() ci sono altre funzioni di controllo per i vostri files e tutte ritornano un valore booleano.bad()Ritorna true se la lettura o la scrittura falliscono.
fail()Ritorna true se la lettura o la scrittura falliscono, ma anche in caso di formato errato.
eof()Ritorna true se il file aperto in lettura è giunto al termine.
good()Ritorna false se in una delle precedenti funzioni il valore di ritorno è falso.
Commenti
Posta un commento
Gli autori non sono responsabili per quanto pubblicato dai lettori nei commenti ad ogni post. Verranno cancellati i commenti ritenuti offensivi o lesivi dell’immagine o dell’onorabilità di terzi, di genere spam, razzisti o che contengano dati personali non conformi al rispetto delle norme sulla Privacy e, in ogni caso, ritenuti inadatti ad insindacabile giudizio degli autori stessi.