Latest web development tutorials

file e flussi di C ++

Finora, abbiamo usato la libreriaiostream standard, che fornisce i metodi cinecoutflusso sono utilizzati per leggere da standard input e scrivere nel flusso di output standard.

Questo tutorial vi mostra come leggere e scrivere file dal flusso per lo streaming di file. Ecco dove un altrofstream libreria standard C ++,che definisce tre nuovi tipi di dati:

数据类型 描述
ofstream 该数据类型表示输出文件流,用于创建文件并向文件写入信息。
ifstream 该数据类型表示输入文件流,用于从文件读取信息。
fstream 该数据类型通常表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息。

Per presentare la gestione in C ++, è necessario includere il file di intestazione in C ++ file di codice sorgente <iostream> e <fstream>.

Aprire il file

Prima di leggere le informazioni dal file o scrivere in un file, è necessario aprire il file.ofstream e fstreamoggetti possono essere utilizzati per aprire il file per la scrittura, se avete solo bisogno di aprire il file per la lettura, utilizzare l'oggettoifstream.

Ecco la funzione open () è la sintassi standard, la funzione open () è membro di fstream, ifstream e ofstream oggetti.

void open(const char *filename, ios::openmode mode);

Qui, open () funzione di membro del primo parametro per specificare il nome e la posizione del file che si desidera aprire, e il secondo parametro definisce il file viene aperto in modalità.

模式标志 描述
ios::app 追加模式。所有写入都追加到文件末尾。
ios::ate 文件打开后定位到文件末尾。
ios::in 打开文件用于读取。
ios::out 打开文件用于写入。
ios::trunc 如果该文件已经存在,其内容将在打开文件之前被截断,即把文件长度设为 0。

È possibile utilizzare una combinazione di due o più delle modalità di cui sopra. Ad esempio, se si desidera aprire il file in modalità di scrittura e vuole troncare il file per evitare che il file esiste già, è possibile utilizzare la seguente sintassi:

ofstream outfile;
outfile.open("file.dat", ios::out | ios::trunc );

Allo stesso modo, se si desidera aprire un file per la lettura e la scrittura, è possibile utilizzare la seguente sintassi:

fstream  afile;
afile.open("file.dat", ios::out | ios::in );

Chiudere il file

Quando il programma C ++ termina, si spegnerà automaticamente aggiornare tutti i flussi, rilasciare tutta la memoria allocata e chiudere tutti i file aperti. Ma i programmatori dovrebbero sviluppare una buona abitudine, prima che il programma termina chiudere tutti i file aperti.

Ecco la funzione close () è la sintassi standard, vicino function () è membro di fstream, ifstream e ofstream oggetti.

void close();

Scrivere sul file

Nella programmazione C ++, usiamo l'operatore di inserimento corrente (<<) per scrivere le informazioni in un file, proprio come utilizzando le informazioni in uscita per l'operatore sullo stesso schermo. L'unica differenza è che qui si sta utilizzandoofstream o oggetto fstreaminvece di oggettocout.

Leggi il file

In programmazione C ++, usiamo l'operatore di estrazione flusso (>>) per leggere informazioni da un file, proprio come utilizzando le informazioni di input operatore dalla tastiera. L'unica differenza è che qui si sta utilizzandofstream o oggetto ifstreaminvece di oggettocin.

Lettura e scrittura esempi

Il seguente programma C ++ per aprire un file in modalità di lettura-scrittura. Dopo la scrittura al file afile.dat informazioni inserite dall'utente, il programma legge le informazioni dal file e output sullo schermo:

#include <fstream>
#include <iostream>
using namespace std;
 
int main ()
{
    
   char data[100];

   // 以写模式打开文件
   ofstream outfile;
   outfile.open("afile.dat");

   cout << "Writing to the file" << endl;
   cout << "Enter your name: "; 
   cin.getline(data, 100);

   // 向文件写入用户输入的数据
   outfile << data << endl;

   cout << "Enter your age: "; 
   cin >> data;
   cin.ignore();
   
   // 再次向文件写入用户输入的数据
   outfile << data << endl;

   // 关闭打开的文件
   outfile.close();

   // 以读模式打开文件
   ifstream infile; 
   infile.open("afile.dat"); 
 
   cout << "Reading from the file" << endl; 
   infile >> data; 

   // 在屏幕上写入数据
   cout << data << endl;
   
   // 再次从文件读取数据,并显示它
   infile >> data; 
   cout << data << endl; 

   // 关闭打开的文件
   infile.close();

   return 0;
}

Quando il codice di cui sopra viene compilato ed eseguito, produce i seguenti ingressi e uscite:

$./a.out
Writing to the file
Enter your name: Zara
Enter your age: 9
Reading from the file
Zara
9

Gli esempi sopra riportati utilizzano un oggetto funzione cin aggiuntive, come ad esempio getline () funzione legge una linea dall'esterno, ignorano () la funzione leggerà la dichiarazione prima di lasciare uscire i caratteri extra vengono ignorati.

puntatore posizione di file

istream e ostreamforniscono funzioni membro per riposizionare la posizione del puntatore del file. Questi includono circa le funzioni membro IStream diseekg ( "cercare get") e sul seekpostream( "seek mettere").

seekp seekg e l'argomento è di solito un intero lungo. Il secondo parametro può essere utilizzato per specificare la direzione di ricerca. Trova direzione può essereios :: Beg (di default, il posizionamento a partire dall'inizio del flusso), può essere ios :: CUR (posizionamentodalla posizione corrente del flusso), può essereios :: fine (dallafine del flusso è iniziato posizionamento).

puntatore posizione del file è un valore intero che specifica il numero di byte dall'inizio del file nella posizione del puntatore. Qui si rivolge "get" posizione file di istanza del puntatore:

// 定位到 fileObject 的第 n 个字节(假设是 ios::beg)
fileObject.seekg( n );

// 把文件的读指针从 fileObject 当前位置向后移 n 个字节
fileObject.seekg( n, ios::cur );

// 把文件的读指针从 fileObject 末尾往回移 n 个字节
fileObject.seekg( n, ios::end );

// 定位到 fileObject 的末尾
fileObject.seekg( 0, ios::end );