Friedrich-Alexander-Universität UnivisSuche FAU-Logo
Techn. Fakultšt Willkommen am Department Informatik FAU-Logo
Logo I4
Lehrstuhl für Informatik 4
Betriebssysteme
 
  Vorlesung
    - UnivIS-Infos
    - Inhalt
    - Folien
 
  Übungen
    - UnivIS-Infos
    - Inhalt
    - Ergänzendes Material
    - Terminübersicht
    - Aufgaben
       * Umgebung
       * Typische Fehler
       * A 1
       * A 2
       * A 3
       * A 4
       * A 5
       * A 6
       * A 7
 
  Evaluation
Department Informatik  >  Informatik 4  >  Lehre  >  WS 2007/08  >  Betriebssysteme  >  Übungen  >  Aufgaben  >  Aufgabe 3  >  Klasse O_Stream

Klasse O_Stream

Einordnung in die Gesamtstruktur

Modul
object
Basisklassen
Stringbuffer
abgeleitete Klassen
CGA_Stream
Erstellungszeitpunkt
Aufgabe 1
Dateien
o_stream.h o_stream.cc

Beschreibung

Die Aufgaben der Klasse O_Stream entsprechen im Wesentlichen denen der Klasse ostream der bekannten C++ IO-Streams-Bibliothek.

Da die Methode put (char) der Basisklasse Stringbuffer recht unbequem ist, wenn die zusammenzustellenden Texte nicht nur aus einzelnen Zeichen, sondern auch aus Zahlen, oder selbst wieder aus Zeichenketten bestehen, werden in der Klasse O_Stream Möglichkeiten zum Zusammenstellen verschiedener Datentypen realisiert. In Anlehnung an die bekannten Ausgabeoperatoren der C++ IO-Streams-Bibliothek wird dazu der Shift-Operator operator<< verwendet.

Darüberhinaus soll es möglich sein, für die Darstellung ganzer Zahlen zwischen dem Dezimal-, dem Binär- dem Oktal- und dem Hexadezimalsystem zu wählen.

öffentliche Methoden

Die folgenden öffentlichen Methoden liefern jeweils eine Referenz auf ihr eigenes O_Stream Objekt zurück. Dadurch ist es möglich, in einem Ausdruck mehrere der Operatoren zu verwenden,
z. B. kout << "a = " << a;
Anfügen des Zeichens c an die gesammelten Zeichen.
  • O_Stream& operator<< (unsigned char c)
  • O_Stream& operator<< (char c)
Anfügen der Zahl number in dem gewählten Zahlensystem.
  • O_Stream& operator<< (unsigned short number)
  • O_Stream& operator<< (short number)
  • O_Stream& operator<< (unsigned int number)
  • O_Stream& operator<< (int number)
  • O_Stream& operator<< (unsigned long number)
  • O_Stream& operator<< (long number)
Anfügen des Zeigerwertes pointer im Hexadezimalsystem.
  • O_Stream& operator<< (void* pointer)
Anfügen der nullterminierten Zeichenkette text (ohne die Nullterminierung).
  • O_Stream& operator<< (char* text)
Aufruf der Manipulatorfunktion fkt
  • O_Stream& operator<< (O_Stream& (*fkt) (O_Stream&))

Manipulatoren

Um bei der Textformatierung mit Hilfe der Klasse O_Stream das Zahlensystem bequem wählen und Zeilenumbrüche einfügen zu können, sollen sogenannte Manipulatoren definiert werden. Der Ausdruck
kout << "a = " << dec << a << " ist hexadezimal " << hex << a << endl;
soll dann beispielsweise den Wert der Variablen a erst in dezimaler und dann in hexadezimaler Schreibweise formatieren und zum Schluss einen Zeilenumbruch anfügen.

Die gewünschten Eigenschaften können realisiert werden, wenn hex, dec, oct, bin und endl als Funktionen (d.h. nicht als Methoden der Klasse O_Stream) definiert werden, die als Parameter und Rückgabewert jeweils eine Referenz auf ein O_Stream Objekt erhalten bzw. liefern. Durch diese Signatur wird bei dem genannten Ausdruck der bereits erwähnte Operator O_Stream& O_Stream::operator<< ((*fkt*) (O_Stream&)) ausgewählt, der dann nur noch die als Parameter angegebene Funktion ausführen muss.

Insgesamt sollen folgende Manipulatoren definiert werden:

O_Stream& endl (O_Stream& os);
fügt einen Zeilenumbruch ein.
O_Stream& bin (O_Stream& os);
wählt das binäre Zahlensystem aus.
O_Stream& oct (O_Stream& os);
wählt das oktale Zahlensystem aus.
O_Stream& dec (O_Stream& os);
wählt das dezimale Zahlensystem aus.
O_Stream& hex (O_Stream& os);
wählt das hexadezimale Zahlensystem aus.

Anmerkung

Der Manipulatorbegriff wurde dem Buch "Bjarne Stroustrup: The C++ Programming Language" entnommen. Dort finden sich auch weitergehende Erläuterungen dazu.

  Impressum   Datenschutz Stand: 2007-11-23 08:54   AG, WH