Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

stream IO

5 views
Skip to first unread message

Dirk Olbertz

unread,
Jul 4, 1996, 3:00:00 AM7/4/96
to

Hi Leute,

folgendes Problem:
Ich moechte per cin eine Eingabe lesen, die aber auch Leerzeichen und
Kommata enthaelt, z.B:

tabelle.Name, tabelle.PLZ where not (tabelle.Name like "B*H")

Muss ich jetzt in einer Schleife immer wieder cin aufrufen, bis die
Eingabe leer ist und die einzelnen Teile aneinanderkopieren, oder gibt
es einen einfacheren Weg ?

Gruss,
Dirk.
--

Dirk Olbertz
olb...@do.isst.fhg.de

Dietmar Kuehl

unread,
Jul 5, 1996, 3:00:00 AM7/5/96
to

Hi,
Olaf Krzikalla (o...@irz.inf.tu-dresden.de) wrote:
: >1. Die Destruktoren der Basisklasse werden automatisch aufgerufen, auch
: > wenn sie 'virtual' deklariert sind. Das ist ein Sonderregel fuer
: > Destruktoren.

: Trotzdem ist der explizite Aufruf von Destruktoren natuerlich moeglich und der
: Quelltext ist mit einem zusaetzlichen "e" auch kompilierfaehig:

Ich bin mir ziemlich sicher (habe es aber nicht nachgeguckt), dass der
explizite Aufruf von Destruktoren fuer automatische Objekte oder der
explizite Aufruf des Basisklassen-Destrukturs fuer 'this' im Destruktor
einer abgeleiteten Klasse in "undefined behavior" resultiert (also z.B.
mal schnell eine geeignete Festplatte formatiert wird...), wenn es
nicht sogar "ill-formed" ist (dann muesste es der Compiler abfangen, um
standard-konform zu sein).

Dagegen ist der explizite Aufruf von Destruktoren fuer Objekte, die mit
"placement new" angelegt wurden notwendig, um "undefined behavior" zu
vermeiden...

: Jetzt meine Frage:

: template<class T> class Liste {...};
: ...
: typedef ListePtr<T> *Liste<T>; <- Das kriegt der Compiler
: (zumindest BC4.5) nicht hin.
: Wie ist die richtige Syntax ?

Das geht in C++ auch nicht, weder so, noch mit irgendeiner andere
Syntax: 'typedef's koennen keine Templates sein (soweit ich weiss...).
Was allerdings geht, ist spezifische Typen zu definieren, etwa

typedef ListePtr<int> *IntListe;
--
<mailto:dietma...@uni-konstanz.de>
<http://www.informatik.uni-konstanz.de/~kuehl/>
I am a realistic optimist - that's why I appear to be slightly pessimistic

Olaf Krzikalla

unread,
Jul 5, 1996, 3:00:00 AM7/5/96
to


Hi,

>1. Die Destruktoren der Basisklasse werden automatisch aufgerufen, auch
> wenn sie 'virtual' deklariert sind. Das ist ein Sonderregel fuer
> Destruktoren.

Trotzdem ist der explizite Aufruf von Destruktoren natuerlich moeglich und der
Quelltext ist mit einem zusaetzlichen "e" auch kompilierfaehig:

>class MyClass : private fstream
>{ ^

Fuer einen korrekten Lauf wuerde ich dann aber nicht garantieren (s.o.).
Jetzt meine Frage:

template<class T> class Liste {...};

...

typedef ListePtr<T> *Liste<T>; <- Das kriegt der Compiler
(zumindest BC4.5) nicht hin.
Wie ist die richtige Syntax ?

Ciao Olaf

Torsten Vogt

unread,
Jul 5, 1996, 3:00:00 AM7/5/96
to

In article <31DBB714...@do.isst.fhg.de>,

Versuchs mal mit cin.getline(...) oder cin.gets(...).
Die Argumente weiss ich nicht auswendig, aber ein Blick in iostream.h
und Methoden der Klasse istream sollte weiterhelfen.

Torsten Vogt

--
---------------------------------------------------------------------
| Torsten Vogt |
| Universitaet Mannheim - Lehrstuhl Praktische Informatik I |
| Seminargebaeude A5 |
| D-68131 Mannheim |
| |
| Tel : 0049-621/292-5132 Fax: 0049-621/292-5297 |
| email: vo...@pi1.informatik.uni-mannheim.de |
| WWW : http://pi1.informatik.uni-mannheim.de/HomePages/vogt.html |
---------------------------------------------------------------------

--
---------------------------------------------------------------------
| Torsten Vogt |
| Universitaet Mannheim - Lehrstuhl Praktische Informatik I |
| Seminargebaeude A5 |

0 new messages