Latest web development tutorials

C ++ Dateien und Streams

Bisher haben wir die Standard -iostream - Bibliothek verwendet, die verwendeten Methoden cinundcoutStrom liefert von der Standardeingabe zu lesen und auf die Standardausgabe schreiben.

Dieses Tutorial zeigt Ihnen, wie Sie Dateien aus dem Stream zu lesen und Schreiben von Dateien zu streamen. Das ist , wo eine andere C ++ Standard Libraryfstream definiert es drei neue Datentypen:

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

Um Datei in C ++ Handhabung, müssen Sie die Header-Datei in C ++ Quellcodedatei enthalten <iostream> und <fstream>.

Öffnen Sie die Datei

Bevor Sie die Informationen aus der Datei zu lesen oder in eine Datei schreiben, müssen Sie zuerst die Datei öffnen.ofstream und fstreamObjekte können die Datei zu öffnen zum Schreiben verwendet werden, wenn Sie die Datei zum Lesen öffnen müssen, dieifstream- Objekt verwenden.

Hier ist die open () Funktion Standard-Syntax, open () Funktion ein Mitglied von fstream ist, ifstream und ofstream Objekte.

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

Hier open () Member - Funktion das erste Argument gibt den Namen und den Speicherort der Datei , die Sie öffnen möchten, und der zweite Parameter definiert die Pattern - Datei geöffnet wird.

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

Sie können eine Kombination aus zwei oder mehreren der obigen Modi verwenden. Zum Beispiel, wenn Sie die Datei im Schreibmodus öffnen möchten, und wollen die Datei zu kürzen, falls eine Datei bereits vorhanden ist, können Sie die folgende Syntax verwenden:

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

Ebenso Sie, wenn Sie eine Datei zum Lesen und Schreiben zu öffnen möchten, können Sie die folgende Syntax verwenden:

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

Schließen Sie die Datei

Wenn das C ++ Programm beendet wird, wird es automatisch ausgeschaltet, alle Streams aktualisieren, lassen Sie alle zugewiesenen Speicher und schließen Sie alle geöffneten Dateien. Aber Programmierer sollten eine gute Gewohnheit zu entwickeln, bevor das Programm beendet schließen Sie alle geöffneten Dateien.

Hier ist die close () Funktion Standard-Syntax, close () Funktion ein Mitglied von fstream ist, ifstream und ofstream Objekte.

void close();

Datei schreiben

In der C ++ Programmierung verwenden wir den Stream-Operator (<<) Informationen in eine Datei zu schreiben, genau wie die Ausgabe von Informationen an den Bediener auf dem gleichen Bildschirm. Der einzige Unterschied ist hier , dass Sieofstream oder fstreamObjekt stattcout- Objekt verwenden.

Lesen Sie die Datei

In der C ++ Programmierung verwenden wir den Stream-Operator (>>) Informationen aus einer Datei zu lesen, genau wie die Bedienereingabeinformationen von der Tastatur. Der einzige Unterschied ist hier , dass Siefstream oder ifstreamObjekt stattcinObjekt verwenden.

Lesen & Schreiben Beispiele

Der folgende C ++ Programm zum Öffnen einer Datei im Lese-Schreib-Modus. Nach dem Schreib afile.dat Informationen in die Datei durch den Benutzer eingegeben, liest das Programm die Informationen aus der Datei und Ausgabe auf dem Bildschirm:

#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;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es folgende Ein- und Ausgänge:

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

Die obigen Beispiele verwenden eine zusätzliche Funktion cin Objekt, wie getline () Funktion eine Linie von der Außenseite liest, ignorieren () gibt die Erklärung lesen, bevor Sie die zusätzlichen Zeichen Weglassen ignoriert werden.

Dateipositionszeiger

istream und ostreambieten Elementfunktionen zur Repositionierung der Dateizeigerposition. Dazu gehören etwa Istream Member - Funktionen vonseekg ( "suchen zu bekommen")und auf der Ostreamseekp ( "Suchet put").

seekg seekp und das Argument ist in der Regel eine lange Ganzzahl. Der zweite Parameter kann verwendet werden, um die Richtung der Suche angeben. Finden Richtungios sein :: beg (default,die Positionierung von Anfang des Stroms), kann esiossein:: cur (Positionierungvon der aktuellen Position des Stroms), kann es sein ,ios :: Ende (vomEnde des Streams begonnen wird Positionierung).

Dateipositionszeiger ist ein ganzzahliger Wert, der die Anzahl der Bytes vom Anfang der Datei an die Stelle des Zeigers angibt. Hier zielt "get" Dateipositionszeiger Beispiel:

// 定位到 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 );