Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 23

Ähnliche Dokumente
Programmieren in C/C++ und MATLAB

4 Schleifen und Dateien

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Grundlagen der Informatik 6. Arrays I

Vorlesungsprüfung Programmiersprache 1

C++ für Ingenieure. Einführung in die objektorientierte Programmierung 4 Objektorientierte Programmierung. 4.8 Streams und Dateien HARALD NAHRSTEDT

Ein- und Ausgabe (I/O)

ios fstream ifstream

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Hochschule Darmstadt Informatik-Praktikum SS 2017 EIT Bachelor 5. Aufgabenblatt Datenstruktur, Dateieingabe und -ausgabe

Kapitel 8: Abstrakte Datentypen. Inhalt. Definition ADT Keller ADT Schlange

Programmierkurs Kapitel 4: Dateien Seite 1. Verwaltungfeld im Speicher. 4.1 Alternativen zur Programmierung der Eingabe und der Ausgabe

C++ Teil 7. Sven Groß. 3. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni / 16

Informationsverarbeitung

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Grundlagen der Informatik 2. Typen

Hochschule Darmstadt Informatik-Praktikum WS 2017/2018 WIng Bachelor 6. Aufgabenblatt Zeiger, verkettete Liste, Dateieingabe und -ausgabe

Ein- und Ausgabe mit Dateien

9. Vektoren. (auch Felder/array)

Die elementare Ausgabe von Daten auf externe Medien, wie Dateien und das Einlesen davon wird demonstriert.

Inhalt Streams Eingabe / Ausgbe in C Dateizugriff in C Eingabe / Ausgabe in C++ Dateizugriff in C++ Error Handling

Mapra: C++ Teil 7. Felix Gruber, Michael Rom. 14. Juni 2016 IGPM. Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 7 14.

C++ - Einführung in die Programmiersprache Ein- und Ausgabe in die Konsole. Leibniz Universität IT Services Anja Aue

Von C zu C++ Karl Gmeiner

Ein- und Ausgabe in Dateien (File I/O)

9 Streams. 9.1 Einführung und Architektur

Angewandte Mathematik und Programmierung

Einführung in I/O und File-Handling in C ++

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz

For matierte Ein-/Ausgabe iostream: multiple inheritance von istream und ostream Weitere abgeleitete Klassen (z. B. Ausgabe nach Strings)

Entwickeln Sie ein C/C++-Programm für die Verwaltung einer Artikeldatei gemäß folgender Vorgaben!

Ein- und Ausgabe mit Dateien

DAP2 Praktikum Blatt 1

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Auswahlen (Selektionen)

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Hydroinformatik I: IO - Files

15. Die Klasse string

Grundlagen C und C++ Einheit 04: Weitere Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme

Informatik I. Matthias Geel Büro: IFW A Blog:

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 18

Programmieren in C/C++ und MATLAB

Mapra: C++ Teil 3. Felix Gruber. 29. April IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 3 29.

Der Datentyp String. Stringvariable und -vergleiche

Polymorphismus 179. Function.h. #include <string>

Übersicht PERL. !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!!

Dateien mit wahlfreiem Zugriff (Random Access Files)

Dateioperationen Fachhochschule Würzburg-Schweinfurt Prof. Dr. Martin Ochs. Abspeichern und Einlesen von Texten (Strings) in Dateien

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Objektorientierte Programmierung mit C++ SS 2007

Programmieren in C/C++ und MATLAB

Informatik II Datenstrukturen und Algorithmen in C/C++ Nachtrag

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

10 Lesen und Schreiben von Dateien

Programmieren in C++ Stream I/O

Quiz und Übungen. C++ Übung am 19. Mai 2016

Herzlich willkommen!

1. Allgemeine Datei (Binärdatei mit formatierten Inhalt)

Implementation VL3 Gruppe A

Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente

Grundlagen der Informatik 5. Kontrollstrukturen II

4 ZEICHEN UND ZEICHENKETTEN

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:

Einführung in die Programmierung mit C++

Kapitel 8: Elementare Datenstrukturen. Inhalt. Definition ADT Keller ADT Schlange ADT Liste ADT Binärbaum

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

7.1 Motivation. Tastatureingabe. Inhalt von input.txt. Bildschirmausgabe. Inhalt von output.txt. i =33 j = 44

E-/A-Funktionalität nicht Teil der Programmiersprache

Informatik für Elektrotechnik und Informationstechnik

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Variablen, Konstanten und Datentypen

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Grundlegende Anweisungen in C++

Zeiger, Arrays und Strings in C und C++

Einführung in die Programmierung Wintersemester 2016/17

Informatik I - Übung 2 Programmieren in Eclipse

8. Referenzen und Zeiger

Klausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

5. Elementare Befehle und Struktogramme

Elementare Datentypen in C++

Algorithmen und Datenstrukturen

Hydroinformatik I: Strings

Dateizugriff unter C

1 UNIX und die Kommandozeile. 2 C++ Tipps. 1.1 wichtige Befehle und Programme. 1.2 Umleiten der Standardein- und Ausgabe. 2.

13 Reguläre Ausdrücke

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

6. Bearbeitung von Strings in C Bearbeitung von Strings in C

Programmieren in C/C++ und MATLAB

Grundlagen der Informatik 11. Zeiger

Ein und Ausgabe Grundlagen C++ E/A System operiert über streams streams sind logische Geräte, die Informationen produzieren bzw. verbrauchen streams

Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3

Klausur Informatik WS 2012/13

3. Semester : 1. Prüfung

Projekt 3 Variablen und Operatoren

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 16

Einführung in die Programmierung (EPR)

Objektorientierte Programmierung

Transkript:

Kapitel 16 Datei Aus- und Eingabe Seite 1 von 23

Datei Aus- und Eingabe - Für die Ausgabe auf Dateien und die Eingabe von Dateien werden die Streams ofstream und ifstream verwendet. - Sie sind in der Bibliothek fstream deklariert. - Man unterscheidet zwischen Text- und Binärdateien. - Textdateien enthalten ausschließlich ASCII-Zeichen. - Sie können mit gewöhnlichen Editoren bearbeitet werden. - C++ Quelldateien sind Textdateien. Seite 2 von 23

Datei Aus- und Eingabe - Binärdateien enthalten Daten in binärer Form. - Diese Daten können nur mit speziellen Editoren (z.b. WinHex) sinnvoll dargestellt werden. - Binärdateien verwendet man, um größere Datenmengen abzulegen. - Sie benötigen hierfür nicht so viel Speicher wie Textdateien. Seite 3 von 23

Ausgabe in Textdatei - Will man Daten in eine Datei schreiben, muss zunächst ein Ausgabestream vom Typ ofstream definiert und mit einer Datei verbunden werden: ofstream myfile("d:\\entwicklung\\cpp\\datei.txt"); - Bei der Pfadangabe ist jeder Backslash zu verdoppeln. Seite 4 von 23

Ausgabe in Textdatei - Falls die Datei noch nicht existiert, wird sie neu angelegt. - Beim Öffnen einer Datei können Fehler auftreten. - Diese Fehler sollten abgefangen werden. - Zum Schreiben der Daten in diese Textdatei kann der Operator << verwendet werden. - Für die Dateiausgabe stehen die gleichen Manipulatoren wie für cout zur Verfügung. (Beispielsweise: setprecision, setw) Seite 5 von 23

Beispiel: Ausgabe in Textdatei #include <iostream> #include <iomanip> #include <fstream> using namespace std; void main() { ofstream myfile("datei.txt"); if(!myfile) cerr << "Fehler beim Öffnen der Datei"; else myfile << setprecision(5) << 1.0/3.0 << endl; myfile.close(); } Seite 6 von 23

Einlesen von Textdatei - Will man Daten aus einer Datei lesen, muss zunächst ein Eingabestream vom Typ ifstream definiert und mit einer Datei verbunden werden: ifstream myfile("datei.txt"); - Die Datei muss bereits existieren. - Zum Lesen von Daten aus dieser Textdatei kann der Operator >> verwendet werden. Seite 7 von 23

Beispiel: Einlesen von Textdatei #include <iostream> #include <iomanip> #include <fstream> using namespace std; void main() { double x; ifstream myfile("datei.txt"); if(!myfile) cerr << "Fehler beim Öffnen der Datei"; else myfile >> x; myfile.close(); } Seite 8 von 23

Die Bibliothek fstream - Bisher haben wir die Datentypen ifstream und ofstream verwendet, die in der Bibliothek fstream deklariert sind. - Diese Datentypen nennt man auch "Klassen". - Sie stellen die benötigten Funktionen/Methoden zur Verarbeitung von Dateien zur Verfügung. Seite 9 von 23

Einige Methoden von fstream Methode Beschreibung eof() Prüfung auf Dateiende << Schreiben in Datei >> Lesen von Datei open() Öffnen einer Datei close() Schließen einer Datei getline() Lesen einer ganzen Zeile aus einer Datei Seite 10 von 23

Erkennen des Dateiendes - Ist nicht bekannt, wie viele Daten sich in einer Datei zum Lesen befinden, muss bis zum Dateiende gelesen werden. - Das Erreichen des Dateiendes kann durch die Methode eof() geprüft werden. - eof() gibt bei Erreichen des Dateiendes true zurück. while(!myinputfile.eof()) { getline(myinputfile, zeile); cout << zeile << endl; } Seite 11 von 23

Öffnen von Dateien - Um den Inhalt einer Datei lesen zu können, muss diese erst einmal geöffnet werden. - Dies wird entweder erreicht, indem man bei der Deklaration des Eingabestreams die Datei gleich angibt: ifstream myfile("datei.txt"); - Oder aber man deklariert zunächst die Streamvariable und öffnet die Datei dann im nächsten Schritt: ifstream myfile; myfile.open("datei.txt"); Seite 12 von 23

Schließen von Dateien - Wenn die Bearbeitung einer Datei beendet ist, sollte die Datei durch close() geschlossen werden. myfile.close(); - Am Ende eines Programms werden alle geöffneten Dateien automatisch geschlossen. - Der Destruktor eines Datei-Streams schließt die Datei ebenfalls automatisch. Seite 13 von 23

Lesen einer ganzen Zeile - Durch die Methode getline() wird eine ganze Zeile aus der angegebenen Datei gelesen. string zeile; getline(myfile, zeile); Seite 14 von 23

Die Bibliothek sstream - Die Bibliothek sstream stellt istringstream und ostringstream zur Verfügung. - Zur Umwandlung einer Zeichenkette in eine Zahlenvariable kann istringstream verwendet werden: int meinezahl; string s("123"); istringstream inputstream(s); inputstream >> meinezahl; Seite 15 von 23

Die Bibliothek sstream - Soll aus einer Zahlenvariablen eine Zeichenkette werden, so kann ostringstream verwendet werden: int meinezahl = 123; string s; ostringstream outputstream; outputstream << meinezahl; s = outputstream.str(); - Die Methode str() wandelt den Stream in einen String um und schreibt ihn in s. Seite 16 von 23

Die Methode str() - Einerseits wandelt also str() den Stream in einen String um: string s = outputstream.str(); - Andererseits kann so, ein String dem Stream zugewiesen werden, um ihn dann durch >> in eine Variable zu schreiben: getline(myfile, zeile); istringstream iss.str(zeile); iss >> name; Seite 17 von 23

Die Methode str() - Fortsetzung - Warum wird der String durch getline() nicht gleich in name eingelesen (statt - wie im Beispiel - in zeile)? - Man beachte, dass im eingelesen String zeile auch Leerzeichen enthalten sein können. Durch dem Umweg über istringstream ist es dadurch nun möglich, den String durch >> zu trennen und die Teilstrings verschiedenen Variablen zuzuweisen. - Analog zu cin, welches bei der Eingabe auch den Gebrauch von cin >> a >> b >> c; - erlaubt, bei der man die Werte durch Leerzeichen getrennt hintereinander schreiben kann. Seite 18 von 23

Die Methode clear() - Die Methode clear() löscht den zugewiesenen String, so dass eine neue Zuweisung erfolgen kann. iss.clear(); Seite 19 von 23

Vollständiges Schreiben einer Textdatei - Im ersten Teil des folgenden Beispiels wird eine Datei Namen.txt zum Schreiben geöffnet, ein string-feld mit Namen und Ident-Nummer angelegt und komplett element- und zeilenweise in die Datei Namen.txt geschrieben. - Danach wird die Datei geschlossen. => siehe "Beispiel_18_-_Datei_-_Aus_-_und_Eingabe.zip" 1. Teil Seite 20 von 23

Bsp: Vollständiges Lesen einer Textdatei - Im zweiten Teil des Beispiels wird die Datei Namen.txt zum Lesen geöffnet und bis zum Erreichen des Dateiendes zeilenweise ausgelesen. - In jeder Zeile wird die Ident-Nummer vor den Namen gestellt und das string-feld wieder beschrieben und ausgegeben. - Am Ende wird die Datei wieder geschlossen. => siehe "Beispiel_18_-_Datei_-_Aus_-_und_Eingabe.zip" 2. Teil Seite 21 von 23

Einige Methoden von string Methode find(s) insert(n, s) erase(p, n) length() Beschreibung Liefert die Position, an der sich der String s befindet. Das Zählen beginnt hier wie bei Arrays bei 0. Die Methode liefert string::npos, wenn s nicht gefunden wurde. string::npos steht für den Wert -1 Fügt den String s an Position n ein. Entfernt ab Position p n Zeichen. Liefert die Länge des Strings. Seite 22 von 23

Einige Methoden von string - Bsp string s("123"); // String s erstellen mit Zeichenkette "123" int len = s.length(); // liefert 3; Die Länge des Strings s.insert(2, "xy"); // s ist nun "12xy3" s.erase(2, 2); // s ist nun "123" int pos = s.find("23"); // liefert die Position 1 Siehe dazu auch: Skript Informatik - Kapitel 12 (Strings) Seite 23 von 23