C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Was macht eine Stream Klasse zu einem Stream?

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Vinzenz Feenstra
Guest





PostPosted: Mon Oct 18, 2004 7:28 pm    Post subject: Was macht eine Stream Klasse zu einem Stream? Reply with quote



Hi,

ich frage mich was eine Stream Klasse wie z.B. std::stringstream zu
einem Stream macht....

Was für Eigenschaften haben Streams?

Würde mich auch über Links freuen.

MfG

Vinzenz Feenstra

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Thomas Maeder
Guest





PostPosted: Tue Oct 19, 2004 5:11 am    Post subject: Re: Was macht eine Stream Klasse zu einem Stream? Reply with quote



Vinzenz Feenstra <webmaster (AT) evilissimo-softdev (DOT) de> writes:

Quote:
ich frage mich was eine Stream Klasse wie z.B. std::stringstream zu
einem Stream macht....

Die letzten 6 Buchstaben des Namens. :-)


Quote:
Was für Eigenschaften haben Streams?

Das Verhalten anzubieten, welches der ISO C++ Standard von Streams verlangt.


Es ist mir nicht klar, was Du genau erfahren möchtest. Was willst Du mit den
Antworten anfangen, die Du in diesem Thread erhälst?

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Tue Oct 19, 2004 9:53 am    Post subject: Re: Was macht eine Stream Klasse zu einem Stream? Reply with quote



Vinzenz Feenstra <webmaster (AT) evilissimo-softdev (DOT) de> wrote


Quote:
ich frage mich was eine Stream Klasse wie z.B. std::stringstream zu
einem Stream macht....

Sie erbt von std::istream und std::ostream.

Quote:
Was für Eigenschaften haben Streams?

Das sie von entweder std::istream oder std::ostream erben.

Im Standard, in jedem Fall. Man könnte auch andere Stream-Typen
definieren, wenn er will. Ob der neue Typ ein Stream ist oder nicht,
kommt darauf an, wie man Stream definieren will. Es gibt keine
allgemeine Definition ausser der Norm.

Persönlich würde ich sagen, dass eine Klasse, die >> oder << zum Parsen
bzw. Formattieren benutzt, ist ein Stream. Im Sinn von C++.

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Falk Tannhäuser
Guest





PostPosted: Tue Oct 19, 2004 10:03 am    Post subject: Re: Was macht eine Stream Klasse zu einem Stream? Reply with quote

Vinzenz Feenstra wrote:
Quote:
Hi,

ich frage mich was eine Stream Klasse wie z.B. std::stringstream zu
einem Stream macht....
Was für Eigenschaften haben Streams?

Keine Ahnung, ob's da eine präzise, allgemeingültige Definition gibt...
Im Kontext der C++-ISO-Norm sach ich mal so:
Eine Stream-Klasse ist eine Klasse, welche ihr öffentliches
Interface von einer der Standardbibliotheksklassen
namespace std
{
template <class charT, class traits = char_traits class basic_istream;
template <class charT, class traits = char_traits class basic_ostream;
template <class charT, class traits = char_traits class basic_iostream;
}
erbt (genauer gesagt: einer deren Template-Instanzierungen, üblicherweise mit 'charT'
gleich 'char' oder 'wchar_t') und demzufolge für diese substituierbar ist.

Damit lassen sich die alle in den genannten Basisklassen erscheinenden öffentlichen
Member-Funktionen sowie die beliebten Operatoren << (für basic_ostream und
basic_iostream) sowie >> (für basic_istream und basic_iostream) aufrufen, gleich
ob letztere in der Standardbibliothek (für die Standard-Typen) oder vom Benutzer
(für benutzerdefinierte Typen) definiert sind.

Stream-Klassen delegieren die Bufferung und Datenübertragung an einen
template <class charT, class traits = char_traits class basic_streambuf;
oder eine davon abgeleitete Klasse.

Die oben genannten Klassen formatieren auszugebende Daten im Textformat bzw.
konvertieren einzulesende Daten vom Textformat in die interne Darstellung.

Im weiteren Sinne nennt man mitunter auch benutzerdefinierte Klassen, die andere
Formatierungen (Binärformat) vornehmen und daher nicht von obengenannten Klassen
abstammen, doch trotzdem ein ähnlich aussehendes Interface anbieten, "Stream-Klassen".

Quote:
Würde mich auch über Links freuen.

Eine Online-Referenz für die gesamte C++-Standardbibliothek (einschließlich der Stream-
klassen) findet sich z.B. unter <http://www.dinkumware.com/htm_cpl/index.html>,

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Vinzenz Feenstra
Guest





PostPosted: Tue Oct 19, 2004 3:15 pm    Post subject: Re: Was macht eine Stream Klasse zu einem Stream? Reply with quote

Thomas Maeder wrote:
Quote:
Vinzenz Feenstra <webmaster (AT) evilissimo-softdev (DOT) de> writes:
ich frage mich was eine Stream Klasse wie z.B. std::stringstream zu
einem Stream macht....


Die letzten 6 Buchstaben des Namens. Smile

o0

Quote:
Was für Eigenschaften haben Streams?
Das Verhalten anzubieten, welches der ISO C++ Standard von Streams verlangt.
Ja genau das wollte ich wissen.


Quote:
Es ist mir nicht klar, was Du genau erfahren möchtest. Was willst Du mit den
Antworten anfangen, die Du in diesem Thread erhälst?

Ich möchte einen Filter für einen TCP/IP Daten Strom machen. (über
Sockets) Nun möchte ich wissen was für Eigenschaften eben ein Stream
haben muss um ein Stream zu sein.
Denn es kann sein, das ich sonst nen Designfehler mache. Und genau das
will ich vermeiden.
Mit den Antworten will ich eben herausfinden ob ein Stream wirklich für
meine Idee sinnvoll ist oder ich mir etwas anderes überlegen sollte.

MfG Vinzenz Feenstra

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Michael Walter
Guest





PostPosted: Wed Oct 20, 2004 4:05 am    Post subject: Re: Was macht eine Stream Klasse zu einem Stream? Reply with quote

Quote:
Ich möchte einen Filter für einen TCP/IP Daten Strom machen. (über

Sockets) Nun möchte ich wissen was für Eigenschaften eben ein
Stream
haben muss um ein Stream zu sein.
Denn es kann sein, das ich sonst nen Designfehler mache. Und genau
das
will ich vermeiden.
Mit den Antworten will ich eben herausfinden ob ein Stream wirklich
für
meine Idee sinnvoll ist oder ich mir etwas anderes überlegen sollte.
In diesem Kontext waere ein Blick auf socketstream [1] oder Socket++

[2] evtl auch interessant fuer dich.

Gruesse,
Michael

[1] http://socketstream.sourceforge.net/
[2] http://www.linuxhacker.at/socketxx

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Daniel Albuschat
Guest





PostPosted: Wed Oct 20, 2004 5:06 am    Post subject: Re: Was macht eine Stream Klasse zu einem Stream? Reply with quote

Vinzenz Feenstra wrote:

Quote:
Ich möchte einen Filter für einen TCP/IP Daten Strom machen. (über
Sockets) Nun möchte ich wissen was für Eigenschaften eben ein Stream
haben muss um ein Stream zu sein.

Wie genau solll dieser "Filter" funktionieren/was soll er bezwecken?

MfG,
Daniel Albuschat

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Jörg Barfurth
Guest





PostPosted: Wed Oct 20, 2004 7:53 am    Post subject: Re: Was macht eine Stream Klasse zu einem Stream? Reply with quote

Hi Vinzenz,

Vinzenz Feenstra schrieb:

Quote:
ich frage mich was eine Stream Klasse wie z.B. std::stringstream zu
einem Stream macht....

Was für Eigenschaften haben Streams?

Das Verhalten anzubieten, welches der ISO C++ Standard von Streams
verlangt.

Ja genau das wollte ich wissen.

Der Standard beschreibt halt nur die Standardstreamklassen. Andererseits
sind die so gestaltet, dass du einfach die Standardklassen (istream,
ostream, iostream) [*] verwenden kannst. In der Regel musst du gar keine
eigene Streamklasse verwenden.

[*] Das technische Detail, dass es sich hier eigentlich um
Klassentemplatespezialisierungen handelt, lasse ich hier und im
Folgenden mal aussen vor; andere haben das schon hinreichend gewürdigt.

Quote:
Es ist mir nicht klar, was Du genau erfahren möchtest. Was willst Du
mit den
Antworten anfangen, die Du in diesem Thread erhälst?


Ich möchte einen Filter für einen TCP/IP Daten Strom machen. (über
Sockets) Nun möchte ich wissen was für Eigenschaften eben ein Stream
haben muss um ein Stream zu sein.

Die Streamklasse muss hauptsächlich Daten locale-gerecht formatieren und
an einen Streambuffer weiterleiten oder aus einem Streambuffer lesen und
parsen.

Ein Datenstrom (z.B. aus einem Socket) wird durch einen Streambuffer
(eine von std::streambuf abgeleitete Klasse) abgebildet. Hier
spezifiziert der Standard auch tatsächlich welche Methoden überschrieben
werden müssen oder können und wie die sich verhalten sollen.

Wenn du meinst eine eigene Streamklasse implementieren zu müssen, dann
musst du fast immer eigentlich eine eigene Streambuffer-Klasse
implementieren. Der Standard ist da etwas irreführend, da er noch eine
Reihe spezialisierter Streamklassen (wie *stringstream, *fstream)
bereitstellt. Diese Klassen dienen aber nur der bequemeren Verwendung
eines spezialisierten streambuf mit einem der allgemeinen Streams. D.h
ein std::istringstream ist praktisch lediglich ein std::stringbuf, der
fest mit einem std::istream kombiniert ist. Wenn du einen eigenen
streambuf bastelst, dann kannst du so eine Bequemlichkeitsklasse
definieren, musst es aber nicht.

Quote:
Denn es kann sein, das ich sonst nen Designfehler mache. Und genau das
will ich vermeiden.

Eine eigene Streamklasse wäre wahrscheinlich ein Designfehler (von den
erwähnten Bequemlichkeitsklassen mal abgesehen). Ein eigener
Streambuffer könnte dagegen das richtige sein.

Quote:
Mit den Antworten will ich eben herausfinden ob ein Stream wirklich für
meine Idee sinnvoll ist oder ich mir etwas anderes überlegen sollte.


Ein Stream ist dann sinnvoll, wenn du die Standardmethoden für
formatierte Ein-/Ausgabe verwenden willst und/oder wenn du deine
Ein-/Ausgabefunktionen unabhängig vom Medium gestalten willst und dir
dabei ein (gepufferter) Datenstrom als Abstraktion für das Medium ausreicht.

HTH, Jörg

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Wed Oct 20, 2004 8:52 am    Post subject: Re: Was macht eine Stream Klasse zu einem Stream? Reply with quote

Vinzenz Feenstra <webmaster (AT) evilissimo-softdev (DOT) de> wrote

Quote:
Thomas Maeder wrote:
Vinzenz Feenstra <webmaster (AT) evilissimo-softdev (DOT) de> writes:
ich frage mich was eine Stream Klasse wie z.B. std::stringstream zu
einem Stream macht....

Was für Eigenschaften haben Streams? Das Verhalten anzubieten,
welches der ISO C++ Standard von Streams verlangt.

Ja genau das wollte ich wissen.

Es ist mir nicht klar, was Du genau erfahren möchtest. Was willst Du
mit den Antworten anfangen, die Du in diesem Thread erhälst?

Ich möchte einen Filter für einen TCP/IP Daten Strom machen. (über
Sockets)

Einen Filter auf welcher Ebene?

Eine der Eigenschaften der standard Streams ist, dass sie die
Formattierung streng von der physikalischen Ein- und Ausgabe der Bytes
trennt. Die Klasse istream und ostream spezifiere Abstraktionen zur
Interpretierung bzw. Formattierung von Text. Die benutzen einen
»Delegate« (Strategy-Muster) für die physikalische Ein- und Ausgabe.
Wenn du dieselbe formattierende Schnittstelle haben will, aber mit einer
anderen Quelle oder Senke, danns sollst du ehe von std::streambuf
ableiten.

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Karl Heinz Buchegger
Guest





PostPosted: Wed Oct 20, 2004 9:06 am    Post subject: Re: Was macht eine Stream Klasse zu einem Stream? Reply with quote

Vinzenz Feenstra wrote:
Quote:

Es ist mir nicht klar, was Du genau erfahren möchtest. Was willst Du mit den
Antworten anfangen, die Du in diesem Thread erhälst?

Ich möchte einen Filter für einen TCP/IP Daten Strom machen. (über
Sockets) Nun möchte ich wissen was für Eigenschaften eben ein Stream
haben muss um ein Stream zu sein.
Denn es kann sein, das ich sonst nen Designfehler mache. Und genau das
will ich vermeiden.

Ich denke mal, Du machst soeben einen Designfehler.

Quote:
Mit den Antworten will ich eben herausfinden ob ein Stream wirklich für
meine Idee sinnvoll ist oder ich mir etwas anderes überlegen sollte.


Die kurze Antwort lautet: google nach postings von 'Dietmar Kuehl' zum Thema
stream oder stream buffer, oder schau auf seine Web Site.

Die lange Antwort:
Die Designer der Standard Library haben solche Verwendungen wie Du sie vor hast
vorhergesehen und die stream Klasse so aufgebaut, dass Du Deine Funktionalitaet
unterbringst ohne gleich einen neuen stream bauen zu muessen.

Ein Stream hat eine interne Struktur:
Die gibt es einen Teil der sich um die Formatierung kuemmert, waehrend sich
ein anderer Teil um den reinen Datentransport kuemmert. Langer Rede kurzer
Sinn, den Teil der den eigentlichen Transport der Daten erledigt kann man austauschen
und gegen was eigenes ersetzen. D.h. Was Du wirklich tun willst ist: Ein stream buffer
Objekt erzeugen, dass anstelle von Files seinen Datentransport ueber einen Socket
abwickelt. Dieses stream buffer Objekt jubelst Du dann einem ganz normalen stream
Objekt unter und voala: Die Ein/Ausgabe wird ueber den Socket anstelle von Konsole
oder Files abgewickelt. Wie gesagt: Dietmar hat schon des oefteren gezeigt wie man
sowas macht.

--
Karl Heinz Buchegger
[email]kbuchegg (AT) gascad (DOT) at[/email]

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Sascha Becker
Guest





PostPosted: Mon Oct 25, 2004 5:00 pm    Post subject: Re: Was macht eine Stream Klasse zu einem Stream? Reply with quote

Vinzenz Feenstra wrote:
Quote:
Thomas Maeder wrote:

Vinzenz Feenstra <webmaster (AT) evilissimo-softdev (DOT) de> writes:

ich frage mich was eine Stream Klasse wie z.B. std::stringstream zu
einem Stream macht....



Die letzten 6 Buchstaben des Namens. :-)


o0

Was für Eigenschaften haben Streams?

Das Verhalten anzubieten, welches der ISO C++ Standard von Streams
verlangt.

Ja genau das wollte ich wissen.

Es ist mir nicht klar, was Du genau erfahren möchtest. Was willst Du
mit den
Antworten anfangen, die Du in diesem Thread erhälst?


Ich möchte einen Filter für einen TCP/IP Daten Strom machen. (über
Sockets) Nun möchte ich wissen was für Eigenschaften eben ein Stream
haben muss um ein Stream zu sein.
Denn es kann sein, das ich sonst nen Designfehler mache. Und genau das
will ich vermeiden.
Mit den Antworten will ich eben herausfinden ob ein Stream wirklich für
meine Idee sinnvoll ist oder ich mir etwas anderes überlegen sollte.

MfG Vinzenz Feenstra

Du kannst dir ja mal dieses kleine Tutorial von Josuttis anschauen -

http://www.josuttis.de/cppcode/fdstream.html

Wenn das deinem Zweck gerecht wird, dann ist nen Stream das richtige :-)

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.