Ein C ++ - Programm zur Verwendung der IfStream -Klasse sollte wie folgt beginnen:
#enthaltenDie erste Zeile enthält den Header, der die Definition der Ifstream -Klasse hat. Die zweite Zeile enthält den iOstream -Header, der das Cout -Objekt zum Drucken der Ausgabe an der Klemme (Konsole) enthält. Die dritte Zeile ist eine Aussage und keine Richtlinie. Der Standard -Namespace ist ein beliebiger Name, gefolgt von "STD:;".
In diesem Artikel wird die Verwendung der Ifstream -Klasse des FStream -Headers erläutert, um Eingaben von einer Datei in der Festplatte in ein laufendes Programm zu verarbeiten. Die Eingabe ist Zeichen in Sequenz, die vor dem Erreichen des Programms zu einem Puffer im Speicher gehen. Mit anderen Worten, in diesem Artikel erklärt++.
Erstellen eines Ifstream -Objekts
Um den Inhalt einer Datei in der Festplatte zu lesen, muss ein Ifstream -Objekt aus der Ifstream -Klasse instanziiert werden. Die Konstruktoren, die üblicherweise von angelsächsischen (einschließlich westeuropäischen) Programmierern verwendet werden, sind:
Basic_ifstream ();Das Präfix „Basic_“ kann für alle drei Syntaxe weggelassen werden. Die Verwendung der ersten Syntax hier wird im nächsten Abschnitt veranschaulicht. In der zweiten Syntax ist das erste Argument ein literaler Streicher oder ein Array von Zeichen, die in '\ 0' enden. Diese Zeichenfolge ist ein Verzeichnispfad und ein Dateiname, e.G. “DIR1/TXTFILE.txt ”unter der Annahme, dass sich das Programm im Heim-/Benutzerverzeichnis befindet. Für die zweite Syntax ist das erste Argument das gleiche wie das erste Argument der vorherigen Syntax, aber es handelt sich um eine Zeichenfolge der String -Klasse (Header). In beiden Syntaxen sollte das zweite Argument "iOS_Base :: in" sein, wobei "in" in Lesen bedeutet (Eingabe).
Illustration
Eine Konstruktionserklärung für die zweite Syntax lautet wie folgt:
ifstream ifs = ifStream ("Dir1/txtfile.txt ", ios_base :: in);Der Name der Datei, deren Inhalt gelesen werden soll, lautet „txtFile.txt". Nach dieser Anweisung die Datei “txtFile.txt ”wird im laufenden Programm als offen angesehen. Wenn eine Datei geöffnet wird, befindet sich eine Folge von aufeinanderfolgenden Zeichen, die die Datei darstellen.
Ein Segment für Konstruktionscode für die dritte Syntax ist:
String str = "Dir1/txtfile.txt";In beiden Situationen ist IFS das Ifstream -Objekt der geöffneten Datei. Vergessen Sie mit dem String -Typ nicht, die String -Klasse (Header) in das Programm wie folgt einzubeziehen:
#enthaltenÖffnen einer Datei
Eine Datei soll geöffnet werden, wenn eine Folge aufeinanderfolgender Zeichen der Datei, die die Datei darstellt, im Speicher für die Puffersteuerung befindet. Die zweite und dritte Konstruktionssyntaxe oben öffnen die Datei zum Lesen, aber die erste Syntax nicht. Das heißt. Das Objekt IFS kann mit der ersten Syntax mit der Anweisung aus der Ifstream -Klasse instanziiert werden:
ifstream ifs;In diesem Fall wurde ein Dateiobjekt IFS erstellt, aber die Datei ist noch nicht geöffnet. Um die Datei zum Lesen zu öffnen, muss die Funktion der offenen Mitglieds der Ifstream -Klasse verwendet werden. Die Open () überlasteten Methoden, die üblicherweise von angelsächsischen (einschließlich westeuropäischen) Programmierern verwendet werden, sind:
void open (const char* s, ios_base :: openMode modus = ios_base :: in);Beachten Sie, dass die Konstruktionsanweisung „Ifstream ifs“; Erwähnt keine Datei in der Festplatte. Und so haben die ersten und zweiten Argumente dieser Open () -Mitglied -Funktionen die gleichen Bedeutungen wie die für die zweite und dritte Konstruktionssyntaxe oben.
Illustration
Die Verwendung der ersten Open () -Mitglied -Funktion hier (in diesem Abschnitt) kann wie folgt veranschaulicht werden:
ifstream ifs;Die Verwendung der zweiten Open () -Mitglied -Funktion hier (in diesem Abschnitt) kann wie folgt veranschaulicht werden:
ifstream ifs;Der Unterschied in den beiden Codesegmenten ist die Art und Weise, wie die Zeichenfolge für den Pfad und den Dateinamen konstruiert werden.
Wurde die Datei geöffnet?
Eine Datei soll geöffnet werden, wenn eine Folge aufeinanderfolgender Zeichen der Datei, die die Datei darstellt, im Speicher für die Puffersteuerung befindet. Was ist, wenn der Pfad und/oder der Dateiname falsch waren?? Was wäre, wenn die Datei nicht geöffnet werden könnte, weil die Festplatte schlecht war und ihre Sektoren nicht gelesen werden konnten? Es ist ratsam zu überprüfen, ob die Datei mit der Syntax geöffnet wurde:
bool is_open () const;is_open () ist eine Mitgliedsfunktion der Ifstream -Klasse. Es gibt wahr zurück, wenn die Datei erfolgreich geöffnet wurde und ansonsten falsch falsch ist. Das folgende Codesegment zeigt die Verwendung dieser Mitgliedsfunktion:
ifstream ifs;Die Ausgabe sollte sein:
Die Datei wird geöffnet.Eine Datei schließen
Eine Datei sollte geschlossen werden, nachdem sie geöffnet wurde. Die Schließaktion stoppt den Puffer im Speicher und befreit den Speicherplatz für andere Aktivitäten. Es bricht auch anmutig die Verbindung, die sie mit der Datei in der Festplatte hergestellt hat. IfStream hat die Mitgliedsfunktion Close (), um eine geöffnete Datei zu schließen. Die Syntax ist:
void close ();Das folgende Codesegment zeigt die Verwendung:
ifstream ifs = ifStream ("Dir1/txtfile.txt ", ios_base :: in);Die Ausgabe ist:
Die geöffnete Datei wurde geschlossen.Die Datei sollte verwendet werden, wenn der Programmierer sicher ist, dass sie geöffnet und danach geschlossen wurde.
Lesen von Charakteren einzeln
IfStream hat eine Mitgliedsfunktion, deren Syntax lautet:
Basic_istreamWenn es den nächsten Charakter erhält, wird es in die Variable C gesteckt und gibt das von Basic_istream geerbte Objekt des Ifstream zurück. Der interne Zeiger von Ifstream verweist dann auf den nächsten Charakter für die nächste Lesung. Wenn das Dateiende erreicht ist, wird das zurückgegebene Objekt in False konvertiert.
Das folgende Codesegment liest alle Zeichen in der Datei von eins und sendet jeweils an das Terminal (Konsole):
Char C;C muss zuerst deklariert werden. C ist das Argument von Get (), bei dem es sich um eine Mitgliedsfunktion des Ifstream -Objekts handelt. Die einzige einfache Aussage (Cout << c;) of the while compound statement sends a copy of the character to the output.
Anstatt die Zeichen an die Ausgabe zu senden, können sie an ein String -Objekt gesendet werden und bilden eine lange Zeichenfolge wie folgt:
Char C;In diesem Fall muss der String -Header (Bibliothek) in das Programm aufgenommen werden.
Das folgende Programm liest alle Inhalte einer Datei und zeigt sie an:
#enthaltenAbschluss
Die Ifstream -Klasse des Fstream -Header. Verwenden Sie eine der Syntaxen, um ein Ifstream -Objekt zu erstellen:
Basic_ifstream ();Wenn die erste Syntax verwendet wird, muss das Objekt weiterhin geöffnet werden, wobei eine der folgenden Mitgliederfunktionssyntaxe:
void open (const char* s, ios_base :: openMode modus = ios_base :: in);Um zu wissen, ob eine Datei erfolgreich geöffnet wird, verwenden Sie die Mitgliedsfunktionssyntax:
bool is_open () const;Das Ifstream -Objekt muss nach dem Gebrauch geschlossen werden.
Um die Zeichen einzeln zu lesen, verwenden Sie die Mitgliedsfunktionssyntax in einer Weile-Loop:
Basic_istream