C++ Gestione dei file: come aprire, scrivere, leggere e chiudere i file in C++
In cosa consiste la gestione dei file C++?
I file archiviano i dati in modo permanente in un dispositivo di archiviazione. Con la gestione dei file, l'output di un programma può essere memorizzato in un file. È possibile eseguire varie operazioni sui dati nel file.
Uno stream è un'astrazione di un dispositivo in cui vengono eseguite operazioni di input/output. È possibile rappresentare uno stream come destinazione o sorgente di caratteri di lunghezza indefinita. Ciò sarà determinato dal loro utilizzo. C++ fornisce una libreria fornita di metodi per la gestione dei file. Discutiamone.
La Biblioteca fstream
La libreria fstream fornisce C++ programmatori con tre classi per lavorare con i file. Queste classi includono:
- di corrente– Questa classe rappresenta un flusso di output. Viene utilizzato per creare file e scrivere informazioni sui file.
- ifstream– Questa classe rappresenta un flusso di input. Viene utilizzato per leggere informazioni da file di dati.
- fstream– Questa classe rappresenta generalmente un flusso di file. Viene fornito con funzionalità ofstream/ifstream. Ciò significa che è in grado di creare file, scrivere su file, leggere da file di dati.
L'immagine seguente lo rende semplice da capire:
Per utilizzare le classi precedenti della libreria fstream, è necessario includerle nel programma come file di intestazione. Naturalmente utilizzerai la direttiva del preprocessore #include. È necessario includere anche il file di intestazione iostream.
Come aprire i file
Prima di eseguire qualsiasi operazione su un file, è necessario prima aprirlo. Se è necessario scrivere sul file, aprirlo utilizzando oggetti fstream o ofstream. Se hai solo bisogno di leggere dal file, aprilo utilizzando l'oggetto ifstream.
I tre oggetti, ovvero fstream, ofstream e ifstream, hanno la funzione open() definita al loro interno. La funzione assume questa sintassi:
open (file_name, mode);
- Il parametro file_name indica il nome del file da aprire.
- Il parametro mode è facoltativo. Può assumere uno qualsiasi dei seguenti valori:
Valore | Descrizione |
---|---|
ios:: app | La modalità Aggiungi. L'output inviato al file viene aggiunto ad esso. |
ios::mangiato | Apre il file per l'output, quindi sposta il controllo di lettura e scrittura alla fine del file. |
ios::in | Apre il file per la lettura. |
ios::fuori | Apre il file per una scrittura. |
ios::tronc | Se esiste un file, gli elementi del file devono essere troncati prima della sua apertura. |
È possibile utilizzare due modalità contemporaneamente. Li combini usando | (OR) operatore.
Esempio 1:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file", ios::out); if (!my_file) { cout << "File not created!"; } else { cout << "File created successfully!"; my_file.close(); } return 0; }
Produzione:
Ecco uno screenshot del codice:
Spiegazione del codice:
- Includere il file di intestazione iostream nel programma per utilizzare le sue funzioni.
- Includere il file di intestazione fstream nel programma per utilizzare le sue classi.
- Includi lo spazio dei nomi std nel nostro codice per utilizzare le sue classi senza chiamarlo.
- Chiama la funzione main(). La logica del programma dovrebbe rientrare nel suo corpo.
- Crea un oggetto della classe fstream e dagli il nome my_file.
- Applica la funzione open() sull'oggetto sopra per creare un nuovo file. La modalità out ci consente di scrivere nel file.
- Utilizzare l'istruzione if per verificare se la creazione del file non è riuscita.
- Messaggio da stampare sulla console se il file non è stato creato.
- Fine del corpo dell'istruzione if.
- Utilizzare un'istruzione else per indicare cosa fare se il file è stato creato.
- Messaggio da stampare sulla console se il file è stato creato.
- Applicare la funzione close() sull'oggetto per chiudere il file.
- Fine del corpo dell'istruzione else.
- Il programma deve restituire un valore se viene completato correttamente.
- Fine del corpo della funzione main().
Come chiudere i file
Una volta a C++ Programma termina automaticamente
- inonda i ruscelli
- rilascia la memoria allocata
- chiude i file aperti.
Tuttavia, come programmatore, dovresti imparare a chiudere i file aperti prima che il programma termini.
Gli oggetti fstream, ofstream e ifstream hanno la funzione close() per chiudere i file. La funzione assume questa sintassi:
void close();
Come scrivere su file
Puoi scrivere su file direttamente dal tuo C++ programma. Per questo si usa l'operatore di inserimento del flusso (<<). Il testo da scrivere nel file deve essere racchiuso tra virgolette doppie.
Dimostriamolo.
Esempio 2:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file.txt", ios::out); if (!my_file) { cout << "File not created!"; } else { cout << "File created successfully!"; my_file << "Guru99"; my_file.close(); } return 0; }
Produzione:
Ecco uno screenshot del codice:
Spiegazione del codice:
- Includere il file di intestazione iostream nel programma per utilizzare le sue funzioni.
- Includere il file di intestazione fstream nel programma per utilizzare le sue classi.
- Includere lo spazio dei nomi std nel programma per utilizzare le sue classi senza chiamarlo.
- Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta al corpo di questa funzione.
- Crea un'istanza della classe fstream e dagli il nome my_file.
- Utilizza la funzione open() per creare un nuovo file denominato my_file.txt. Il file verrà aperto in modalità uscita per la scrittura al suo interno.
- Utilizzare un'istruzione if per verificare se il file non è stato aperto.
- Testo da stampare sulla console se il file non è aperto.
- Fine del corpo dell'istruzione if.
- Utilizzare un'istruzione else per indicare cosa fare se il file è stato creato.
- Testo da stampare sulla console se il file è stato creato.
- Scrivi del testo nel file creato.
- Utilizzare la funzione close() per chiudere il file.
- Fine del corpo dell'istruzione else.
- Il programma deve restituire valore in caso di completamento positivo.
- Fine del corpo della funzione main().
Come leggere dai file
Puoi leggere le informazioni dai file nel tuo C++ programma. Ciò è possibile utilizzando l'operatore di estrazione del flusso (>>). Si utilizza l'operatore nello stesso modo in cui lo si utilizza per leggere l'input dell'utente dalla tastiera. Tuttavia, invece di utilizzare l'oggetto cin, si utilizza l'oggetto ifstream/ fstream.
Esempio 3:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file.txt", ios::in); if (!my_file) { cout << "No such file"; } else { char ch; while (1) { my_file >> ch; if (my_file.eof()) break; cout << ch; } } my_file.close(); return 0; }
Produzione:
Nessun file del genere
Ecco uno screenshot del codice:
Spiegazione del codice:
- Includere il file di intestazione iostream nel programma per utilizzare le sue funzioni.
- Includere il file di intestazione fstream nel programma per utilizzare le sue classi.
- Includere lo spazio dei nomi std nel programma per utilizzare le sue classi senza chiamarlo.
- Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta al corpo di questa funzione.
- Crea un'istanza della classe fstream e dagli il nome my_file.
- Utilizza la funzione open() per creare un nuovo file denominato my_file.txt. Il file verrà aperto in modalità per leggerlo.
- Utilizzare un'istruzione if per verificare se il file non esiste.
- Testo da stampare sulla console se il file non viene trovato.
- Fine del corpo dell'istruzione if.
- Utilizzare un'istruzione else per indicare cosa fare se il file viene trovato.
- Creare un variabile carattere chiamato cap.
- Creare un mentre il ciclo per scorrere il contenuto del file.
- Scrive/memorizza il contenuto del file nella variabile ch.
- Utilizzare una condizione if e una funzione eof() ovvero la fine del file, per garantire che il compilatore continui a leggere dal file se la fine non viene raggiunta.
- Utilizzare un'istruzione break per interrompere la lettura del file una volta raggiunta la fine.
- Stampa il contenuto della variabile ch sulla console.
- Fine del corpo.
- Fine del corpo dell'istruzione else.
- Chiama la funzione close() per chiudere il file.
- Il programma deve restituire valore in caso di completamento positivo.
- Fine del corpo della funzione main().
Sommario
- Con la gestione dei file, l'output di un programma può essere inviato e memorizzato in un file.
- È quindi possibile applicare una serie di operazioni ai dati nel file.
- Un flusso è un'astrazione che rappresenta un dispositivo in cui vengono eseguite le operazioni di input/output.
- Un flusso può essere rappresentato come destinazione o origine di caratteri di lunghezza indefinita.
- La libreria fstream fornisce C++ programmatori con metodi per la gestione dei file.
- Per utilizzare la libreria, è necessario includerla nel programma utilizzando la direttiva del preprocessore #include.