Ein erstes kleines Beispiel soll ein Telefonbuch sein. Hier steht die Rufnummer des Kontakts im Hintergrund; die Telephonnummer wird fest dem Namen zugeordnet.

Der Anwender hat auch die Möglichkeit, dem jeweiligen Kontakt eine Kurzwahlnummer zuzuordnen, was den Vorgang des Aufrufs nocheinmal beschleunigt. Wichtig ist, daß es sich hierbei um Pakete handelt und nicht um unabhängige Eingaben, die wild in der Gegend herumschwirren.

Die Telephonnummer braucht keinen Wert zu haben! Somit erspart man sich im struct den stringstream und kann einfach zwei strings aufnehmen. Aber immer zusammenhängend!

Wichtig ist auch, daß das Programm weiss, wieviele Eingaben kommen werden; jedenfalls bei diesem Aufbau. Und noch wichtiger ist es, keine Eingaben ausserhalb des definierten Bereichs zu machen. Das Programm stürzt sonst ab. Daher die if-Anweisung, die das verhindert.

Struct und Record

Ähnlich verhält es sich mit Pointern. Auch hier können Sie mehrere Eingaben machen, ohne jeweils eine eigene Variable anlegen zu müssen. Damit der Zeiger immer wieder einen neuen Wert aufnimmt schreibt man string *zei = new string in der Deklaration. Es ist ratsam, den Pointer, der ja für mehrere Werte herhält, nach Gebrauch wieder zu löschen.

Pointer

Mehr zu Textdateien gleich darunter! Nur so viel: Es wird im Ordner Ihres Quellcodes und ausgeführten Programms eine Textdatei namens Dat_01.txt erzeugt und die Einträge im Programm immer wieder angehängt. Appendix! Das gilt auch dann, wenn das Textprogramm beendet wurde. Beim nächsten Aufruf finden Sie eine erweiterte Liste, sofern Sie vom Programm Gebrauch gemacht haben. Die if Anweisung ist sehr wichtig!

Textdateien erstellen und auslesen

Man ist es gewohnt, Vor- und Nachname mit Leerzeichen zu trennen; dieses wollen wir per string mit aufnehmen. Es reicht nun nicht mehr cin und es muss mit getline ( cin , variable ) aufgenommen werden. Ansonsten würde die Eingabe beim Leerzeichen beendet.

Wie oben erwähnt, braucht die Telefonnummer keine Werte zu haben. Daher verzichten wir auf den Integer und nehmen die Nummer als string auf. Auch hier können jetzt Leerzeichen auftreten.

String und Leerzeichen

Es handelt sich folgend um die Klassen fstream, ifstream und ofstream. Das f steht hierbei für file, o für output und i für input.

Sofern ein Programm nicht selber eine Datei erzeugt, sondern nur darauf zugreift - oder zugreifen möchte - muss für einen Abbruch gesorgt werden. Wenn etwa die Datei verschoben oder gelöscht wurde, kann diese natürlich nicht gefunden werden und das Programm schliesst sich im besten Fall. Andernfalls wird die vergebliche Suche immer weiter ausgeführt und das Programm hängt. Achten Sie auf die if Anweisung!

Besondere Bedeutung wird dem Appendix zuteil, der es erlaubt, immer wieder neue Teile der Datei anzuhängen. Dies kann auch von verschiedenen Programmen aus geschehen, die in dieselbe Datei schreiben.

Bevor Sie sich aber dem Appendix widmen, sollten Sie die Grundlagen - sechs Beispiele - testen und die Pfadangaben Ihrer Umgebung korrekt einhalten.

Klassen  |  String   |  Projekt: Inkrementierung protokollieren

Die wenigsten werden wohl ihre Datei gleich neben dem Quellcode des Programms haben wollen. Also: Dateipfad anlegen und das in gewohnter Weise. C++ erzeugt allerdings keinen Ordner; der muss vorhanden sein. Lediglich die Datei wird erzeugt.
Achten Sie auf: fstream :: app ! Dies ist der Appendix, der es ermöglicht, Eingaben immer wieder anzufügen. Der Texteditor muss dann allerdings das Dokument erneut öffnen, um zu aktualisieren.

Projekt: Inkrementierung protokollieren

Diese sinnfreie Unterhaltung besteht aus fünf Textzeilen, die von drei Programmen in ein und dieselbe Datei geschrieben wurden.

Ein Programm erstellt die Datei und die beiden anderen schreiben in eben diese Datei. Es wäre auch möglich, ein anderes Programm die Aufgabe des Erstellens übernehmen zu lassen. Aber übersichtlicher ist es so. Achten Sie darauf, daß die Programme, die auf die Datei zugreifen, ohne sie zu erstellen, nicht eventuell umsonst suchen.

Startseite  |  Hinweise und Impressum  |  Facebook  |  Twitter  |  Google plus