Arbeiten mit Dateien in C ++. Teil 1 – Библиотека fstream.




Kopfzeile fstream Es bietet die Funktionalität Daten aus einer Datei zu lesen und in die Datei schreiben. Im Allgemeinen ist es sehr ähnlich wie der Kopf iostream, wer arbeitet mit der Konsole, da die Konsole ist auch eine Datei. Daher werden alle grundlegenden Operationen sind die gleichen, für kleine Unterschiede, wie im vorherigen Thema auf iostream.

Die häufigsten Operationen folgende:

  1. Operatoren Redirection O – << und >>
  2. Verfahren zum Aufzeichnen und Lesen Reihen getline() und bekommen() c stellen()
  3. Streaming-Lese- und Schreibmethoden schreiben() und lesen()
  4. Öffentliche Methode Erstellung und Schließen von Dateien öffnen() und schließen()
  5. Die Methoden der Überprüfung, ob die Datei geöffnet wird ist offen() und ob das Dateiende erreicht ist eof()
  6. Einstellen der formatierten Ausgabe für >> mit Hilfe Breite() und Präzision()
  7. Positioniervorgang tellg(), tellp() und seekg(), seekp()

Es ist nicht alle Möglichkeiten, die Bibliothek bietet fstream. Betrachten wir jetzt alles tun wir nicht, da deren Einsatzbereich ist schmal genug. Vertraut mit der oben. Beginnen Sie mit der Klasse das Lesen.

Klasse ifstream

Es bietet die Möglichkeit, Dateien zu lesen. Öffnen Sie die Datei auf zwei Arten: Aufruf der Methode öffnen() oder durch den Pfad, um es in den Konstruktor Eingabe. Sie benötigen eine Textdatei vorbereiten, vor, Starten Sie den Code eingeben. Auf der Disk d, erstellen Sie einen Ordner mit dem Namen 1 und darin, erstellen Sie eine Datei mit der Endung txt – “файл.txt”.

eine Datei im Konstruktor Öffnen sieht wie folgt aus:

So stellen wir eine Datei mit dem Namen file.txt txt zu öffnen, die in dem Ordner mit dem Namen 1, und der Ordner auf Laufwerk d.

Mit der offenen Methode() bequem, wenn der Programmierer will nicht direkt in eine Datei gebunden werden. Plötzlich müssen Sie eine Klasse Eigenschaft oder globale Variable, na ja, öffnen Sie dann die Datei bereits. Wenn Sie eine Datei innerhalb einer bestimmten Funktion öffnen müssen, mit ihm zu arbeiten und schließen, Sie können den Pfad zur Datei direkt im Konstruktor gesetzt. In der Regel je nach Situation.

Öffnen der Datei, zu verschreiben wünschenswert durch: wenn er geöffnet? Da gibt es eine Reihe von Gründen,, in dem die Datei nicht geöffnet werden, und wir nicht sehen. beispielsweise, Datei mit dem angegebenen Namen ist nicht in den vorgeschriebenen Ordnern oder Pfad ungültig. Sie können in zwei Richtungen gehen: Überprüfen Sie die Datei in einer Variablen logischer Ausdruck (Anwenden des Bedieners “!”, z.B) oder das Verfahren zu verwenden, ist offen() :

So wird alles gut funktionieren und die Datei wird geöffnet:

библиотека fstream, mit Dateien in c ++ arbeiten, Programmieren für AnfängerVersuchen Sie nun den Namen einzugeben von dem Ordner nicht ist 1, und 2 ifstream Datei ("d:\\<span style ="Farbe: #ff0000;"><stark>2</stark>\\файл.txt”); und starten Sie das Programm. Seit dem angegebenen Ordnernamen, haben wir nicht schaffen, dann die Datei, natürlich, Es kann nicht geöffnet werden:

библиотека fstream, mit Dateien in c ++ arbeiten, Programmieren für Anfänger

Das zweite Ausführungsbeispiel prüft das Verfahren unter Verwendung von ist offen() :

Verfahren ist offen() Rückkehr 1, Wenn die Datei gefunden wird und erfolgreich geöffnet. andernfalls kehrt 0 und Arbeitscode im Block vorgeschriebenen sonst.

Wenn die Datei nicht geöffnet ist – wünschenswert, den Fehler zu behandeln. Allgemein, wenn alle das Arbeitsprogramm im Zusammenhang mit der Datei schreiben sie eine bestimmte Nachricht an die Konsole, und aus dem Programm setzen. Wenn schwerwiegende Fehler üblich, eine Codeausführung zurückzukehren (Anzahl), der eine oder andere Fehler wird charakterisieren. Die Codes für jede Art von Fehlern der Autor des Programms ihre eigenen erfinden. Eine der Möglichkeiten, Fehler im Programm zu handhaben, haben wir in dem Artikel betrachtet Ausnahmen in C ++.

Wenn die Datei erfolgreich geöffnet, daraus kann man lesen.

Lesen Sie den Operator >>

Wie auch in iostream Lesen kann durch den Bediener angeordnet werden, >>, , der angibt, in denen variabel gemacht werden, um zu lesen:

hält Echt, String und integer. Zeilenausleseende, wenn es einen Raum oder Zeilenende. Es ist erwähnenswert,, dass der Betreiber >> Es galt in Textdateien. Lesen aus einer Binärdatei zu machen, die am besten mit der Methode lesen().

By the way, ist diese Aussage sehr bequem, wenn die Aufgabe besteht darin, die Datei in Worte zu spalten:

Methoden getline() и erhalten()

die Zeichenfolge an die Übersetzung des Wagens zu lesen ist das gleiche, wie in iostream durch getline(). Außerdem wird empfohlen, die überladene Version der Funktion zu verwenden, wenn Sie eine Linie vom Typ String lesen:

Wenn Sie in einer Reihe von Zeichen lesen char[], entweder bekommen() oder getline() ebenso wie die Methoden:

Das Prinzip ist in der Regel die gleiche, wie in den Analoga von Iostream: Dargestellt als Parameterpuffer (Variable, wo die Lesung wird getan), oder vielmehr ein Zeiger auf einen Speicherblock (wenn die Variable statisch deklariert: char buffer[255] z.B, es wird in den Parametern geschrieben &Puffer), gibt die maximale Anzahl von lesbaren (in diesem Beispiel n), um nicht zu Überlauf aufgetreten und der Ausgang der Puffergrenzen und die Trennzeichen nach Bedarf, zu denen Korrekturlesen (in diesem Beispiel die Lücke). Ich hoffe, dass ich nicht Lauffläche auf den Stamm Fanatiker C geschadet, Wenn der Ruß, die diese beiden Funktionen auf 99% austauschbar, und 95% Sie können ersetzt werden durch lesen().

Verfahren lesen()

Ähnlich wie im vorherigen Beispiel?

Eigentlich hier das gleiche Ergebnis – Es gilt als eine bestimmte Anzahl von Zeichen sein. Die Ausnahme nur, es ist unmöglich, das Trennzeichen festlegen. lesen() für unformatierte Eingabe verwendet. Es ist beabsichtigt, in erster Linie binäre Dateien zu lesen. Da die Textdatei – ein Sonderfall eines binären, Diese Methode ist sehr anwendbar auf die Textdatei.

Verfahren schließen()

schließt die Datei. Auch nichts hinzuzufügen. Vielleicht ist die einzige Bemerkung – auf, dass die Datei, zum Lesen geöffnet, wird in der Regel nicht durch dieses Verfahren geschlossen werden nicht schlechter geworden. Sehr seltene Situation, wenn zum Lesen geöffnet Datei verschlechtert, wenn Sie das Programm beenden, ohne die Datei zu schließen. Dieser Schaden wird primär assoziiert mit Nicht-Standard-Vorrichtungen wie Bandlaufwerke oder Band was einige raffinierte Strom von industriellen Steuerungen, aber in Feng Shui zu erinnern – offene Datei soll geschlossen werden. Es ist eine gute Form betrachtet.

Verfahren eof()

Prüft, ob das Dateiende erreicht ist. dh. ob es möglich ist, von ihr weiter zu lesen. Das obige Beispiel des Korrekturlesen Wort Operator >> benutzen Sie einfach dieses Kontroll.

Verfahren seekg()

Installiert die aktuelle Position auf den gewünschten, gibt die Anzahl. Dieses Verfahren wird auch Positionierungsverfahren übertragen:

  • ios_base::Ende – Lesen Sie eine neue Position am Ende der Datei aus
  • ios_base::bitten – Lesen Sie eine neue Position vom Anfang der Datei aus (absolute Positionierung)
  • ios_base::Köter – Wechsel zu n Bytes von der aktuellen Position in der Datei (Default)

Verfahren tellg()

Manchmal braucht man Informationen erhalten über, wie bereits gelesen. Diese Methode wird dazu beitragen, tellg():

Es gibt einen Wert vom Typ int, das zeigt, wie viel bereits in Bytes bestanden hat. Es kann im Tandem mit dem Verfahren verwendet werden, seekg(), Um die Dateigröße:

Als Beispiel für die binären Leseverfahren können so abgebaut werden Klasse:

Ähnliche Wrapper-Klassen nützlich, wenn es Probleme aus einer binären ganzen Struktur Lesen.

Videos über die Arbeit mit Dateien in C ++:

Newsletter neue Lektionen über die Programmierung:

Arbeiten mit Dateien in C ++. Teil 1 – Библиотека fstream.
3.5 (70%) 8 Stimmen

7 Gedanken zu "Arbeiten mit Dateien in C ++. Teil 1 – Библиотека fstream.

  1. guten Abend. Kinder, Warum Sie nicht über eine Datei öffnen. Schon habe ich es versucht und fahren und D und C sind nicht so gut die Datei nicht sehen, und das ist es.

    #einschließen
    #einschließen
    using namespace std;
    int main()
    {
    setlocale(LC_ALL, “rus”);
    ifstream Datei(“d:\\111.txt”);
    ob (file.is_open()) // Verfahren nennen istAuf()
    cout << "Все ОК! Die Datei wird geöffnet!\n n" << endl;
    sonst
    {
    cout << "Файл не открыт!\n n" << endl;
    Rückkehr -1;
    }
    System("pause");
    Rückkehr 0;
    }

  2. Und ist es möglich, diesen Link nicht zu verschreiben zu öffnen() und setzt es in dem Prozess der Umsetzung?Um zum Beispiel des Weg der Rettung des Ergebnisdatenverarbeitungsprogrammes zu wählen?

    1. In der Tat offen() Es dauert eine Zeichenfolge, so können Sie einfach eine separate Zeile und nach der Manipulation seiner Füllung erstellen (Von prostogo cin, auf einige Herausforderungen) übergeben Sie die Zeichenfolge Name in der offenen() )
      Ich habe nicht tun, aber in der Theorie des ganzen Weg sollte es funktionieren, wichtig zu adressieren nicht clanger fallen)

Hinterlasse eine Antwort

Deine Email-Adresse wird nicht veröffentlicht. erforderliche Felder sind markiert *