30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

528 16. Die <strong>C++</strong> Standard Library<br />

basic_istream &get(CharType *buffer, streamsize max,<br />

CharType delim): Analog zur vorhergehenden Methode, nur wird der<br />

Delimiter über den Parameter delim bestimmt.<br />

getl<strong>in</strong>e: Mit denselben Parametersätzen, die auch die vorigen beiden get<br />

Methoden akzeptieren, gibt es analoge getl<strong>in</strong>e Methoden, die genau<br />

dasselbe tun. Der Unterschied zwischen den beiden Methoden ist, dass<br />

get den Newl<strong>in</strong>e-Delimiter im Stream stehen lässt, während getl<strong>in</strong>e ihn<br />

für sich beansprucht und entfernt.<br />

basic_istream &read(CharType *buffer, streamsize num): Liest<br />

höchstens num Characters. Nimmt ke<strong>in</strong>en Delimiter, aber wenn das Ende<br />

des Streams erreicht wird, dann kann es se<strong>in</strong>, dass weniger als num<br />

Characters gelesen wurden.<br />

basic_istream &ignore(streamsize num = 1,<br />

<strong>in</strong>t_type delim = char_traits::eof): Überspr<strong>in</strong>gt num<br />

Characters im Stream bzw. so viele Zeichen, bis es auf den Delimiter<br />

stößt, der durch delim vorgegeben ist. Per Default ist der Delimiter das<br />

Ende des Streams.<br />

Man sieht, durch die Low-Level Methoden e<strong>in</strong>es Input Streams steht die Welt<br />

offen für saubere Analysen und robustes Lesen. Allerd<strong>in</strong>gs kann man auch<br />

leider nicht verleugnen, dass das Erstellen e<strong>in</strong>er sauberen Lese-Operation,<br />

die auf alle Eventualitäten reagieren kann, wirklich sehr mühsam ist. Das ist<br />

leider der Preis, den man für robuste Programme zahlen muss.<br />

Wie bereits erwähnt, kann man mit Streams nicht nur Keyboard Input<br />

lesen und auf den Bildschirm ausgeben. Ebenso gibt es entsprechende<br />

vorgefertigte File Streams und auch Str<strong>in</strong>g Streams, die es erlauben,<br />

e<strong>in</strong>en Str<strong>in</strong>g quasi als Device für e<strong>in</strong>en Stream (egal ob Input oder Output)<br />

zu verwenden. Dadurch ist es leicht, z.B. formatierten Output e<strong>in</strong>es<br />

Objekts <strong>in</strong> e<strong>in</strong>en Str<strong>in</strong>g zu schreiben, ohne dies explizit per Hand machen zu<br />

müssen. Wenden wir uns zuerst <strong>in</strong> e<strong>in</strong>em kurzen Beispiel den File Streams<br />

zu (simple_filestream_demo.cpp):<br />

1 // simple filestream demo . cpp − j u s t a simple<br />

2 // demo , how to work with f i l e streams<br />

3<br />

4 #<strong>in</strong>clude < s t r i n g><br />

5 #<strong>in</strong>clude <br />

6 #<strong>in</strong>clude <br />

7<br />

8 #<strong>in</strong>clude ” u s e r t y p e s . h”<br />

9<br />

10 us<strong>in</strong>g std : : i f s t r e a m ;<br />

11 us<strong>in</strong>g std : : ofstream ;<br />

12 us<strong>in</strong>g std : : s t r i n g ;<br />

13 us<strong>in</strong>g std : : cout ;<br />

14 us<strong>in</strong>g std : : endl ;<br />

15<br />

16<br />

17 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

18 /∗<br />

19 ∗/

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!