Alternativen zu den std-IOStreams
-
volkard schrieb:
Allgemeines C++-Geflame bitte traditionell im C-Forum oder passend im RundUmDieProgramierung.

-
RHBaum schrieb:
Aber sollten heutzutage Streams nicht auch fuer andere dinge verwendet werden ? Also fuer alles wo Datenstroeme rein und raus sollen ....
Offensichtlich gibt es einen Unterschied zwischen formatiertem output (Konsole, human readable) und serialisierung (kompakt, mit metainformationen und nicht human-readable).
WIe willst du das mit einem Interface alleine abbilden?
-
Wegen der Performance. Ich habe mal auf Linux die statfiles im Procfs geparsed, sehen etwa so aus:
[ferler@notebook-fedora17 ~]$ cat /proc/self/stat
2759 (cat) R 2706 2759 2706 34816 2759 4202496 194 0 0 0 0 0 0 0 20 0 1 0 122713 109428736 125 18446744073709551615 4194304 4238049 140737429230192 140737429230192 226698873072 0 0 0 0 0 0 0 17 5 0 0 0 0 0 6335480 6337168 36696064 140737429234750 140737429234770 140737429234770 140737429237739 0Dabei waren die C++ Streams ca doppelt so schnell wie fscanf. Von wegen scheiß Performance.
Obwohl, wer beim Parsen Performance will, sollte Boost.Spirit nehmen ...
-
...
-
Und wie baue ich einen iostream, der mit sockets arbeitet? Das wuerde mich mal interessieren. Und was ist eingentlich mit asynchroner IO?
-
Kellerautomat schrieb:
Und wie baue ich einen iostream, der mit sockets arbeitet? Das wuerde mich mal interessieren. Und was ist eingentlich mit asynchroner IO?
Schau dir mal Boost.Iostream an. Bau dir deinen eigenen Streambuffer/sink.
Ansonsten gibt es soetwas in Boost.Asio schon, nennt sich boost::asio::ip::tcp::iostream
-
Sowas sollte von Haus aus einfach sein und keine Hilfsbibliotheken brauchen.
-
Kellerautomat schrieb:
Sowas sollte von Haus aus einfach sein und keine Hilfsbibliotheken brauchen.
Soso, wie oft braucht man bitte nen eigenen Streambuffer? In welcher Sprache ist soetwas absolut trivial?
Schwieriger als in Java ist es jedenfalls nicht.Boost ist halt ne Abkürzung mit der es nur ein paar Zeilen Code sind.
So geht's mit der reinen Standardbibliothek: http://www.mr-edd.co.uk/blog/beginners_guide_streambuf
-
Offensichtlich gibt es einen Unterschied zwischen formatiertem output (Konsole, human readable) und serialisierung (kompakt, mit metainformationen und nicht human-readable).
WIe willst du das mit einem Interface alleine abbilden?
Ich haett kein Problem das zu trennen ....
und das nen textbasiertes interface auf nem binären aufsetzt (adapter)WIe oft in der Praxis schreibst du code, dem es egal ist, ob das Ding untendrunter text oder binär kann .... und du irgendwie wo umschalten kannst, ob text oder binär rauskommen soll, und es dann beides auch funktioniert.
Ich kaum .... warun also nicht trennen ?Ciao ...
-
RHBaum schrieb:
und das nen textbasiertes interface auf nem binären aufsetzt (adapter)
WIe oft in der Praxis schreibst du code, dem es egal ist, ob das Ding untendrunter text oder binär kann .... und du irgendwie wo umschalten kannst, ob text oder binär rauskommen soll, und es dann beides auch funktioniert.
Ich kaum .... warun also nicht trennen ?Ciao ...
Stimmt, gerade jetzt mit Move-Semantiken wäre ja soetwas möglich, ohne das Streambuffer-Konzept über den Haufen zu werfen:
std::text_istream input(std::binary_istream("file.txt"));Soetwas wie das Decorator-Pattern per Vererbung würds wohl nie in die STL schaffen.

-
Wie ist das denn jetzt mit async IO?
