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

Üblicherweise enthalten Textdateien Absätze, also mehrere Zeilen. Und Sie wollen wohl nicht nur den letzten Eintrag auslesen - fstream :: app - sondern den gesamten Inhalt.

Führen Sie dazu das linke Programm, das die Datei erzeugt und beschreibt mehrmals aus - nicht mehrmals kompilieren - und machen Sie Ihre Einträge mit cin.getline ( str, 256 ) denn es ist ein Array. Jeder Eintrag erzeugt eine Zeile. Führen Sie dann rechtes Programm aus. Mit ein.getline( str, 256 ) werden alle Einträge aufgelistet.

Wichtig ist daß fstream ein und ifstream ein dieselbe Variable für den Stream bezeichnen und char str [ 256 ] in beiden Programmen deklariert wird. Ferner soll natürlich immer von derselben Datei, hier test.txt, die Rede sein.

Freilich können Sie per C++ einen Ordner erstellen. Ein Makro in MS-DOS täte es zwar auch aber hier wollen wir natürlich ein Programm schreiben, das darauf reagiert, wenn der Ordner bereits existiert. Das geschieht ganz einfach per if and else und entsprechender Ausführung, die den Ordner löschen soll.

Es soll Ihnen überlassen bleiben, die Erstellung eines Ordners samt Datei und Aufnahme eines bestimmten Textes zu einem Programm zu kombinieren. Quellcodes dieser Aufgabenstellung werden erheblich länger und sprengen schnell den Rahmen.

Importieren Sie zunächst die Bibliothek direct.h was namentlich schon auf directory hinweist.

Wichtig ist, daß die Variable, die mit dem Kommando mkdir - also make directory - versehen wird ein Integer ist, weil daran die Bedingung geknüpft wird. Der Pfad fällt wohl gleich auf, ist aber kein String, sondern ein Parameter.

Das Löschen des Ordners geschieht durch eine Neudefinition bekannter Variable rmdir und heisst remove directory. Daher sollte das Programm zweimal ablaufen, weil ein existierender Ordner zunächst gelöscht würde.

Um nicht immer auf die Ebene des Betriebssystems wechseln zu müssen, können sie sich die Inhalte der Ordner auch im Programm anzeigen lassen. Und das schön übersichtlich in guter alter Manier nach MS-DOS.

Zunächst die Bibliothek process.h und dann sind zwei Befehle aus DOS-Zeiten enthalten: cd für change directory und dir directory, um den Inhalt des Ordners anzuzeigen.

Auch dieses Progrämmchen sollte zweimal aufgerufen werden, da der Order im Falle einer Existenz zunächst gelöscht wird. Dann wird ein Ordner samt Unterordner erzeugt.

Die wenigsten werden wohl ihre Datei gleich neben dem Quellcode des Programms haben wollen. Also: Dateipfad anlegen und das in gewohnter Weise. C++ erzeugt mit fstream natürlich keinen Ordner sondern nur die Datei; 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  |  Ordner erstellen

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