IOStreamLibrary.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Klassen - Verkettete Liste -
Objektorientierte Programmierung
Ein- und Ausgabe von Dateien
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Java: Dynamische Datentypen
Klassenvariable (auch Klassendaten bzw. statische Attribute genannt) und statische Methoden.
Dateien. Eine Datei wird in C++ als ein Stream, also als ein Objekt einer bestimmten Klasse dargestellt.
Abstrakter Datentyp in C++ I - Klasse -
Das erste Programm (Folie 16)
Modulare Programmierung
Planung einfache Dateibehandlung (externe Dateien, Öffnen, Lesen/Schreiben, Schließen). Diskussion des Problems, die Wörter in einem gegebenen Text.
Rekursive Funktionen (Fakultät)
Einführung in die Programmierung
Informatik I for D-MAVT
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Informatik 1 Letzte Übung.
Dynamische Datentypen
Ganze Zahlen Die Typen int, unsigned int; Auswertung arithmetischer Aus-drücke, arithmetische Operatoren.
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Grundlagen wissenschaftlichen Arbeitens An Overview of C++ Ali CICEK
Purga - Scriptengine Ein Einblick.
Was mich ursprünglich von Perl überzeugt hat. Gegeben ist eine Textdatei, deren Größe unbekannt ist. Sie ist jedoch so klein, daß sie komplett in den Speicher.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 2 Dr. W. Narzt u. Dr. A. Stritzinger.
Programmieren ... in C++ Prof. Dr.-Ing. Franz-Josef Behr, HfT Stuttgart Programmeiren I.
Repetitorium PG : Standard Template Library FH-Darmstadt, FB Informatik.
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
early binding (frühe Bindung) late binding (späte Bindung)
A) Erklären Sie den Datentyp char. b) Erklären Sie den Datentyp Struct c) Erklären Sie die Wirkungsweise des Operators & bei Anwendung im Zusammenhang.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
C++ SFINAE inkl. std::enable_if
1 // Laengste Zeile bestimmen // // Liest die Eingabe Zeichen fuer Zeichen, bis // das erscheint. // Die laengste Zeile wird ausgegeben (bei.
1 // Verkettete Liste 3 // demonstriert verkettete Listen und // Rekursion // (mit Entfernen eines Listenelementes) // #include struct Liste { int Element;
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
1 // 9_1_Datei_IO //Elementare Verwendung von Dateien // Vorsicht: nicht robust, #include const int maxLen = 70; void Schreiben(char *, ofstream *); void.
Einführung in die Programmierung Wintersemester 2015/16 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
1 // Verkettete Liste 2 // demonstriert verkettete Listen und // Rekursion // (Einfügen am "Fuß") // #include struct Liste { int Element; Liste *weiter;
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
C++ FÜR cOMPUTERSPIELENTWICKLER
Tutorium Software-Engineering SS14 Florian Manghofer.
Klassen und Objekte.
Dynamischer Speicher malloc wird in c++ eher nicht mehr verwendet.
Programmieren in C / C++ Erste Schritte mit C++ Klassen und Objekte
CPP Eine der frühen objektorientierten Programmiersprachen
Einführung in Qt Empfohlene Version 4 Empfohlene Pakete: qt4-default
Arguments to main() int main(int argc, char *argv[]) { int i;
Einführung in die Programmierung
Dynamisches Laden von Klassen
Durchschnitt (verbal)
Friends C++ ermöglicht, einzelne Funktionen oder ganze Klassen zu friends zu erklären. Friendfunktionen haben Zugang zu den privaten Daten einer Klasse.
Referenzen In c kennen wir gewöhnliche Variablen und Pointer.
Einführung in die Programmierung
CPP Eine der frühen objektorientierten Programmiersprachen
IOStreamLibrary.
Einführung in die Programmierung
Test - Beginn Die Verwendung von Unterlagen ist nicht zulässig. Entfernen Sie daher alle Unterlagen und sonstigen Utensilien. Tragen Sie Ihren Namen, Ihre.
Einführung in die Programmierung
Einführung in die Programmierung
Einführung in die Programmierung
Einführung in die Programmierung
«Delegierter» Methoden Schablone Funktionszeiger
Implementieren von Klassen
Einführung in die Programmierung
Einführung in die Programmierung
 Präsentation transkript:

IOStreamLibrary

ostream ostream& ostream::put(char c); ostream& ostream::write(const char* pStr, int n); ostream& ostream::write(const unsigned char* pStr, int n); ostream& ostream::write(const signed char* pStr, int n); ostream& operator<<(char C); ostream& operator<<(unsigned char C); ostream& operator<<(signed char C); ostream& operator<<(const char* pC); ostream& operator<<(const unsigned char* pC); ostream& operator<<(const signed char* pC); ostream& operator<<(short S); ostream& operator<<(unsigned short S); ostream& operator<<(int I); ostream& operator<<(unsigned int I); ostream& operator<<(long L); ostream& operator<<(unsigned long L); ostream& operator<<(float F); ostream& operator<<(double D); ostream& operator<<(long double D); ostream& operator<<(streambuf*); ostream& operator<<(ostream& (*f)(ostream&)); ostream& operator<<(ios& (*f)(ios&));

istream int istream::get(); istream&istream::get( char* pCh,int n, char Delim='\n'); istream&istream::get(unsigned char* pCh,int n, char Delim='\n'); istream&istream::get(signed char* pCh,int n, char Delim='\n'); istream&istream::get( char& rCh); istream&istream::get(unsigned char* rCh); istream&istream::get(signed char* rCh); istream&istream::getline( char& rCh); istream&istream::getline(unsigned char* rCh); istream&istream::getline(signed char* rCh); istream&istream::read( char* pCh, int Count); istream&istream::read(unsigned char* pCh, int Count); istream&istream::read(signed char* pCh, int Count);

istream& operator>>( char * pCh); istream& operator>>(unsigned char * pCh); istream& operator>>(signed char* pCh); istream& operator>>( char& rCh); istream& operator>>(unsigned char& rCh); istream& operator>>(signed char& rCh); istream& operator>>( short& rSh); istream& operator>>(unsigned short& rSh); istream& operator>>( int& rI); istream& operator>>(unsigned int& rI); istream& operator>>( long& rL); istream& operator>>(unsigned long& rL); istream& operator>>(float& rF); istream& operator>>(double& rD); istream& operator>>(long double& rLD); istream& operator>>(streambuf* pSB); istream& operator>>(istream& (*_f)(istream&)); istream& operator>>(ios& (*_f)(ios&));

ios bool good ( ) const; bool fail ( ) const; bool eof ( ) const; IOS-Member Beschreibung Beispiel bool good ( ) const; Check if the state of the stream is good for i/o while (IFile.good()) bool fail ( ) const; Check if either failbit or badbit is set while (!IFile.fail()) bool eof ( ) const; Check if eofbit is set while (!IFile.eof()) bool bad ( ) const; Check if badbit is set while (!Ifile.bad) bool operator ! ( ) const; Evaluate stream object while(!(!IFile)) operator void*( )const; Convert to pointer while ((void*)IFile) iostate rdstate() const; Get error state flags void setstate(iostate s); Set error state flag void clear (iostate state=goodbit ); Set error state flags flag value indicates eofbit End-Of-File reached while performing an extracting operation on an input stream. failbit The last input operation failed because of an error related to the internal logic of the operation itself. badbit Error due to the failure of an input/output operation on the stream buffer. goodbit No error. Represents the absence of all the above (the value zero).

Beispiel #include <iostream> #include <fstream> using namespace std; int main() { ifstream IFile("Testeof.cpp"); char c=0; // while (!IFile.eof()) // while (IFile.good()) // while (!IFile.fail()) // while (!IFile.bad()) // while(!(!IFile)) // while ((void*)IFile) while (c!=EOF) cout<< (c=(char)IFile.get()); } return 0;

istream mit filebuf // istream constructor #include <iostream> Funkton Anmerkung explicit istream (streambuf * sb); // istream constructor #include <iostream> #include <fstream> using namespace std; int main (int argc, char* argv[]) { filebuf fb; fb.open (argv[1],ios::in); istream is(&fb); if (fb.is_open()) { while (fb.in_avail()) cout << char(is.get()); fb.close(); }else cerr<<"could not open file " <<argv[1]<<endl; Return 0; }

get/getline /* Es wird nur die erste Zeile gelesen, weil get das \n nicht extrahiert !! */ #include <iostream> #include <fstream> using namespace std; int main() { ifstream IFile("Testeof.cpp"); char vBuf[128]; if (IFile.is_open()) while (!IFile.eof()) IFile.get(vBuf,128); cout<< vBuf << endl; } else cerr<<"Mist"<<endl; return 0; /* Nimmst Du statt get, getline, funktioniert die Sache fein*/ #include <iostream> #include <fstream> using namespace std; int main() { ifstream IFile("Testeof.cpp"); char vBuf[128]; if (IFile.is_open()) while (!IFile.eof()) IFile.getline(vBuf,128); cout<< vBuf << endl; } else cerr<<"Mist"<<endl; return 0;

Manipulatoren ohne Parameter Manipulatoren ohne Parameter werden durch eine Funktion ostream& f(ostream& os) { .... return os; } programmiert, deren Name (nicht deren Aufruf!!) dann in den Ausgabestream eingefügt wird. Andere Funktionen werden ausgeführt und ihr Returnwert entsprechend des Typs ausgegeben. ostream& operator<<(ostream& (*f)(ostream&));

Beispiel Manipulator #include <iostream> #include <fstream> #include <iomanip> using namespace std; // Manipulator, Zeilennummern int line; ostream& f(ostream& os) { os<< setw(4)<<line <<' '; return os; } int main(int argc, char* argv[]) ifstream IFile(argv[1]); char vBuf[128]; if (IFile.is_open()) while (!IFile.eof()) IFile.getline(vBuf,128); //cout<< f(cout) << vBuf << endl;// Falsch!! cout<< f << vBuf << endl; // Richtig !! line++; }//erzeugt nebenstehende Ausgabe else cerr<<"Mist"<<endl; return 0; 0 #include <iostream> 1 #include <fstream> 2 #include <iomanip> 3 using namespace std; 4 // Manipulator, der nichts macht 5 int line; 6 ostream& f(ostream& os) 7 { 8 os<< setw(4)<<line <<' '; 9 return os; 10 } 11 12 int main(int arghc, char* argv[]) 13 { 14 ifstream IFile(argv[1]); 15 char vBuf[128]; 16 if (IFile.is_open()) 17 while (!IFile.eof()) 18 { 19 IFile.getline(vBuf,128); 20 //cout<< f(cout) << vBuf << endl; 21 cout<< f << vBuf << endl; 22 line++; 23 }//erzeugt nebenstehende Ausgabe 24 else cerr<<"Mist"<<endl; 25 return 0; 26 }

Die als Manipulator eingetragene Funktion wird ausgerufen Sie erzeugt als Returnwert ein Objekt (im Bsp. nBlank) Dieses ManipulatorObjekt wird mit einem Funktionspointer und dem Parameterwert initialisiert Auf das Maipulatorobjekt wird der eigene operator<< angewandt Die operator<< Funktion ruft die übergebene Funktion mit dem Prameterwert des Manipulators #include <iostream> #include <fstream> #include <iomanip> using namespace std; class nBlank; ostream & nBlankFunc(ostream & os, int n); ostream& operator<<(ostream& DS, nBlank MO); typedef ostream& (ftype)(ostream& DS, int i); class nBlank { int i; ftype* f; public: nBlank(int j, ftype* X) { i = j; f = X; } friend ostream& operator<<(ostream& DS, nBlank DSL); };

nBlank blank(int n){return nBlank(n,nBlankFunc);} ostream & nBlankFunc(ostream & os, int n) {for (int i=0; i<n;i++)os<<' '; return os;} ostream& operator<<(ostream& DS, nBlank MO) { return MO.f(DS,MO.i); } int main(int arggc, char*argv[]) ifstream IFile(argv[1]); char vBuf[128]; if (IFile.is_open()) while (!IFile.eof()) IFile.getline(vBuf,128); cout<< blank(3) << vBuf << endl; }//erzeugt nebenstehende Ausgabe else cerr<<"Mist"<<endl; return 0;