file input output operations c
Uno studio sulle operazioni di input output di file e sulle funzioni di puntatore di file in C ++.
Nella programmazione in tempo reale, ci occupiamo di grandi blocchi di dati che non possono essere ospitati dai dispositivi di input-output standard. Quindi dobbiamo utilizzare la memoria secondaria per la memorizzazione dei dati. Utilizzando l'archiviazione secondaria di solito archiviamo i dati sotto forma di file.
Possiamo leggere dati da file o scrivere dati in file utilizzando una sequenza di dati chiamata flussi in formato testo o binario. Ci sono vari input / output e altre operazioni relative ai file in C ++. Questo tutorial spiega queste operazioni relative ai file utilizzando varie classi.
=> Visita qui per l'esclusiva serie di tutorial di formazione C ++.
Cosa imparerai:
Classi di input / output di file in C ++
Abbiamo visto una classe iostream in C ++ che definisce la funzionalità di input e output standard, inclusi cin e cout. Questa classe è limitata ai dispositivi di input e output standard come rispettivamente tastiera e monitor.
Quando si tratta di operazioni sui file, C ++ ha un diverso insieme di classi che possono essere utilizzate.
Queste classi sono descritte di seguito:
- Ofstream: Classe di gestione dei file che indica il flusso di file di output e viene utilizzata per scrivere dati nei file.
- Ifstream: Classe di gestione dei file che indica il flusso del file di input e viene utilizzata per leggere i dati dal file.
- Fstream: Classe di gestione dei file che ha la capacità di gestire sia ifstream che ofstream. Può essere utilizzato per leggere e scrivere su un file.
Le seguenti operazioni sono supportate, in Gestione file C ++:
- Apri un file
- Chiudi un file
- Leggi da un file
- Scrivi su un file
Vediamo in dettaglio ognuna di queste operazioni !!
Apri un file
L'associazione dell'oggetto di una delle classi di flusso a un file per la lettura o la scrittura o per entrambe è chiamata apertura di un file. Un file aperto viene rappresentato nel codice utilizzando questo oggetto flusso. Pertanto, qualsiasi operazione di lettura / scrittura eseguita su questo oggetto flusso verrà applicata anche al file fisico.
La sintassi generale per aprire un file con lo stream è:
void open(const char* filename, ios::open mode mode)
Qui,
filename => La stringa contenente il percorso e il nome del file da aprire.
mode => Parametro opzionale che indica la modalità in cui il file deve essere aperto.
C ++ supporta varie modalità in cui il file può essere aperto. Possiamo anche specificare una combinazione di queste modalità utilizzando l'operatore OR.
quanto è buono Ubuntu rispetto a Windows
Modalità file | Descrizione |
---|---|
ios :: in | Apre il file in modalità di input per la lettura. |
ios :: out | Apre il file in modalità di output per la scrittura dei dati su file. |
ios :: ate | Imposta la posizione iniziale alla fine del file. Se il flag di fine file non è impostato, la posizione iniziale viene impostata all'inizio del file. |
ios :: trunc | Se il file è aperto per la scrittura e ha già dei contenuti, il contenuto viene troncato. |
ios :: app | Apre il file in modalità di aggiunta in modo tale che tutti i contenuti vengano aggiunti alla fine del file. |
ios :: binary | Apre il file in modalità binaria. |
Per esempio,se vogliamo aprire un file “miofile.dat” per aggiungere dati in modalità binaria, possiamo scrivere il seguente codice.
ofstream myfile;
myfile.open(“myfile.dat”, ios::out|ios::app|ios::binary);
Come già accennato, il parametro mode è opzionale. Quando apriamo un file senza specificare il secondo parametro, una funzione membro aperto di ofstream, ifstream o fstream ha una modalità predefinita per aprire il file con.
Questi sono dati come segue:
Classe | Modalità di default |
---|---|
Ifstream | ios :: in |
ofstream | ios :: out |
Fstream | ios :: in | ios :: out |
Quindi, se non specifichiamo il secondo parametro nella funzione open, a seconda della classe di stream utilizzata, il file viene aperto con la modalità predefinita.
Chiusura di un file
Possiamo usare la funzione close per chiudere un file e rilasciare le risorse contenute nel file quando abbiamo finito con le operazioni di input e output su un file.
La funzione per chiudere un file è:
void close()
Quindi, quando abbiamo finito con le operazioni sul file sopra myfile, possiamo chiudere il file come segue:
myfile.close();
Una volta che il file è stato chiuso utilizzando la funzione di chiusura, l'oggetto file associato può essere riutilizzato per aprire un altro file.
Leggere da un file
Possiamo leggere le informazioni da un file riga per riga utilizzando l'operatore di estrazione del flusso (>>). È simile alla lettura dell'input dallo standard input usando cin. L'unica differenza è nel caso dei file, usiamo ifstream o fstream object invece di cin.
Di seguito viene fornito un codice di esempio per la lettura da un file:
ifstream myfile; myfile.open(“samp_file.txt”); cout<<”Reading from a file”<>data; cout<Nel codice sopra, apriamo un file e utilizzando l'operatore di estrazione del flusso (>>), leggiamo il contenuto del file. Una volta terminata la lettura, possiamo chiudere il file.
Scrittura su un file
Possiamo anche scrivere dati su un file utilizzando le operazioni sui file. L'operatore che usiamo per scrivere i dati in un file è un operatore di inserimento del flusso (<<). Once again this is the same operator that we use to print data to a standard output device using cout. Difference between the two is that for file related writing we use ofstream or fstream object.
Consideriamo il seguente codice di esempio:
char data(100); ofstream myfile; myfile.open(“samp_file.txt”); cout<<”Enter the string to be written to file”<Qui, leggiamo una riga dall'input e la scriviamo in un file che è stato aperto con l'oggetto ofstream.
Nell'esempio di codice riportato di seguito, forniamo una dimostrazione di tutte le operazioni di gestione dei file.
#include #include using namespace std; int main () { char data(100); // opening a file in write mode. ofstream myfile; myfile.open('E:\message.txt'); cout << 'Writing to the file' << endl; cout << 'Enter your name: '; cin.getline(data, 100); myfile << data << endl; cout <> data; cin.ignore(); myfile << data << endl; // close the opened file. myfile.close(); // opening a file in read mode. ifstream infile; infile.open('E:\message.txt'); cout << 'Reading from a file' <> data; cout << data <> data; cout << data << endl; infile.close(); return 0; }
Produzione:
come programmare per computer per principianti
Scrittura sul file
Inserisci il tuo nome: Ved
Inserisci la tua età: 7
Leggere da un file
Di
7
Nel programma sopra prima, apriamo un file in modalità di scrittura. Quindi leggiamo i dati, ad esempio nome ed età, e li scriviamo su un file. Quindi chiudiamo questo file. Successivamente, apriamo lo stesso file in modalità di lettura e leggiamo i dati riga per riga dal file e li visualizziamo sullo schermo.
Quindi questo programma copre tutte le operazioni di I / O sui file.
File State Scorie
Esistono alcune funzioni membro che vengono utilizzate per controllare lo stato del file. Tutte queste funzioni restituiscono un valore booleano.
Abbiamo tabularizzato queste funzioni come segue:
Funzione Descrizione eof () Restituisce vero se viene raggiunta la fine del file durante la lettura del file. fallire() Restituisce vero quando l'operazione di lettura / scrittura non riesce o si verifica un errore di formattazione male() Restituisce vero se la lettura o la scrittura su un file non riesce. bene() Restituisce false negli stessi casi in cui la chiamata di una delle funzioni precedenti restituirebbe true.
Get / Put e altre operazioni speciali
I flussi di file I / O che abbiamo visto finora hanno una posizione interna di get e put simili agli altri flussi di I / O come iostream.
La classe ifstream ha una posizione get interna che contiene la posizione dell'elemento / carattere da leggere nel file nella successiva operazione di input. La classe ofstream ha una posizione put interna che contiene la posizione dell'elemento / carattere da scrivere nella successiva operazione di output.
Per inciso, fstream ha sia posizioni get che put.
Per facilitare la lettura e la scrittura utilizzando queste posizioni, abbiamo alcune funzioni membro che vengono utilizzate per osservare e modificare queste posizioni.
Queste funzioni sono elencate di seguito:
Funzioni Descrizione tellg () Restituisce la posizione corrente del puntatore get tellp () Restituisce la posizione corrente del puntatore put seekg (posizione) Le mosse ottengono un puntatore alla posizione specificata contando dall'inizio del file seekg (offset, direzione) Le mosse ottengono un puntatore al valore di offset relativo al punto dato dalla direzione del parametro. seekp (posizione) Le mosse inseriscono un puntatore nella posizione specificata contando dall'inizio del file seekp (offset, direzione) Le mosse mettono un puntatore sul valore di offset relativo al punto dato dalla direzione del parametro.
Il parametro direzione dato nei prototipi di funzione di cui sopra è un file enumerato tipo di tipo seekdir e determina il punto da cui viene conteggiato l'offset.
Può avere i seguenti valori.
ios :: beg Offset dall'inizio del flusso ios :: cur Offset dalla posizione corrente ios :: end Offset dalla fine del flusso
Vediamo un esempio completo che dimostra l'utilizzo di queste funzioni.
#include #include using namespace std; int main() { fstream myfile; myfile.open('E:\myfile.txt',ios::out); if(!myfile) { cout<<'Cannot create File...'; } else { cout<<'New file created'< Produzione:
Nuovo file creato
Posizione iniziale del puntatore del file a: 34
Dopo seekp (-1, ios :: cur), Posizione puntatore file a: 33
Dopo seekg (5, ios :: beg), File Pointer at: 5
Dopo seekg (1, ios :: cur), File Pointer at: 6
c ++ doppio elenco collegato
Come mostrato nel programma sopra, abbiamo creato un file in cui scriviamo una riga di testo. Quindi utilizzando le varie funzioni sopra descritte, visualizziamo varie posizioni del Puntatore del file.
Conclusione
In questo tutorial, abbiamo visto le varie operazioni sui file per aprire, chiudere e leggere / scrivere dati da / in un file.
Abbiamo anche visto le funzioni per cambiare il puntatore del file per accedere a posizioni specifiche nel file. Nelle nostre esercitazioni successive, discuteremo alcuni argomenti più importanti relativi al C ++.
=> Leggi la serie di formazione Easy C ++.
Lettura consigliata
- Operazioni di input / output di base in C ++
- Input-Output e file in Python (apertura, lettura e scrittura di Python su file)
- Operazioni di I / O di base in Java (flussi di input / output)
- Manipolazione dei file in Unix: panoramica del file system Unix
- Caratteri speciali Unix o metacaratteri per la manipolazione dei file
- Autorizzazioni di accesso ai file Unix: Unix Chmod, Chown e Chgrp
- Oggetti file VBScript: CopyFile, DeleteFile, OpenTextFile, Read and Write Text File
- Distribuzione Java: creazione ed esecuzione di file JAR Java