<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Frage zu StreamIteratoren]]></title><description><![CDATA[<p>Hallo,<br />
ich habe gerade das Kapitel über Streamiteratoren im C++ Primer gelesen.<br />
Im Primer findet sich folgendes Beispiel:</p>
<pre><code class="language-cpp">ostream_iterator&lt;string&gt; out_iter(cout, &quot;\n&quot;);
istream_iterator&lt;string&gt; in_iter(cin), eof;

while(in_iter != eof)
    *out_iter++ = *in_iter++;
</code></pre>
<p>Meiner Meinung nach ist folgende Version deutlich besser lesbar</p>
<pre><code class="language-cpp">string str;
while(cin&gt;&gt;str)
    cout&lt;&lt;str&lt;&lt;endl;
</code></pre>
<p>Ich frage mich jetzt, welchen Sinn Streamiteratoren haben? Benutzt jemand von euch diese Iteratoren? Oder werden sie soger relativ häufig eingesetzt? und wenn ja, wann?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/241737/frage-zu-streamiteratoren</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 07:47:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/241737.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 25 May 2009 11:44:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu StreamIteratoren on Mon, 25 May 2009 11:44:22 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe gerade das Kapitel über Streamiteratoren im C++ Primer gelesen.<br />
Im Primer findet sich folgendes Beispiel:</p>
<pre><code class="language-cpp">ostream_iterator&lt;string&gt; out_iter(cout, &quot;\n&quot;);
istream_iterator&lt;string&gt; in_iter(cin), eof;

while(in_iter != eof)
    *out_iter++ = *in_iter++;
</code></pre>
<p>Meiner Meinung nach ist folgende Version deutlich besser lesbar</p>
<pre><code class="language-cpp">string str;
while(cin&gt;&gt;str)
    cout&lt;&lt;str&lt;&lt;endl;
</code></pre>
<p>Ich frage mich jetzt, welchen Sinn Streamiteratoren haben? Benutzt jemand von euch diese Iteratoren? Oder werden sie soger relativ häufig eingesetzt? und wenn ja, wann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1715354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1715354</guid><dc:creator><![CDATA[Streamyy]]></dc:creator><pubDate>Mon, 25 May 2009 11:44:22 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu StreamIteratoren on Mon, 25 May 2009 11:48:16 GMT]]></title><description><![CDATA[<p>z.B. kann man Inhalte von Containern mittels std::copy wunderbar an einen ostream_iterator übergeben, der das Ganze dann auf der Konsole ausgibt. Ähnliches gilt für das Kopieren von Sequenzen von und nach fstreams etc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1715358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1715358</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 25 May 2009 11:48:16 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu StreamIteratoren on Mon, 25 May 2009 11:48:51 GMT]]></title><description><![CDATA[<p>Sobald Du die Streams mit den Algorithmen kombinierst, benötigst Du die Stream Iteratoren.</p>
<p>(z.B. std::copy auf den std::cout).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1715359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1715359</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Mon, 25 May 2009 11:48:51 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu StreamIteratoren on Mon, 25 May 2009 13:04:41 GMT]]></title><description><![CDATA[<p>Ja, die Stream-Iteratoren machen erstmal so keinen großen Sinn. Aber schau mal hier:</p>
<pre><code class="language-cpp">vector&lt;string&gt; words;
// ...

copy(words.begin(), words.end(), ostream_iterator&lt;string&gt;(cout, &quot;\n&quot;));
</code></pre>
<p>Man könnte so auch natürlich nicht nur in cout umkopieren, sondern in jedes andere Stream-Objekte (z.B. in ein File- oder Network-Stream).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1715427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1715427</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 25 May 2009 13:04:41 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu StreamIteratoren on Mon, 25 May 2009 15:00:51 GMT]]></title><description><![CDATA[<p>Und wo liegt darin der Vorteil zu</p>
<pre><code class="language-cpp">vector&lt;string&gt; words;
//...

for(size_t t=0;t!=words.size();++t)
    cout&lt;&lt;words[t]&lt;&lt;endl; //oder ein anderes ostream objekt
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1715522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1715522</guid><dc:creator><![CDATA[Streamyy]]></dc:creator><pubDate>Mon, 25 May 2009 15:00:51 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu StreamIteratoren on Mon, 25 May 2009 15:02:46 GMT]]></title><description><![CDATA[<p>Streamyy schrieb:</p>
<blockquote>
<p>Und wo liegt darin der Vorteil zu</p>
</blockquote>
<p>Wo liegt der Vorteil in strcpy gegenüber while(*trg++=*src++); ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1715524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1715524</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 25 May 2009 15:02:46 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu StreamIteratoren on Mon, 25 May 2009 15:42:24 GMT]]></title><description><![CDATA[<p>[quote=&quot;Streamyy&quot;]Meiner Meinung nach ist folgende Version deutlich besser lesbar[/quiote]<br />
Deine Version macht etwas völlig anderes, also ist der Vergleich strenggenommen ohnehin hinfällig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1715556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1715556</guid><dc:creator><![CDATA[LordJaxom_off]]></dc:creator><pubDate>Mon, 25 May 2009 15:42:24 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu StreamIteratoren on Mon, 25 May 2009 15:50:52 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">fill_n( ostream_iterator&lt;string&gt;( cout, &quot;\n&quot; ), 100, &quot;Ich soll nicht mehr als Unreg posten&quot; );
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Streamyy schrieb:</p>
<blockquote>
<p>Meiner Meinung nach ist folgende Version deutlich besser lesbar</p>
</blockquote>
<p>Deine Version macht etwas völlig anderes, also ist der Vergleich strenggenommen ohnehin hinfällig.</p>
<blockquote>
<p>Wo liegt der Vorteil...</p>
</blockquote>
<p>Wo der Vorteil von Funktionen im Allgemeinen liegt: Lesbarkeit und Wiederverwendbarkeit. Das oben ist ein schönes Beispiel, wie man dasselbe Werkzeug mit einer anderen Aufgabe kombiniert. Du musst den Sinn der Schleife auch nicht nochmal erfassen, wenn Du den Code lesen musst, weil dort im Klartext steht, was gemacht wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1715562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1715562</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 25 May 2009 15:50:52 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu StreamIteratoren on Mon, 25 May 2009 18:09:30 GMT]]></title><description><![CDATA[<p>Streamyy schrieb:</p>
<blockquote>
<p>Und wo liegt darin der Vorteil zu</p>
<pre><code class="language-cpp">vector&lt;string&gt; words;
//...

for(size_t t=0;t!=words.size();++t)
    cout&lt;&lt;words[t]&lt;&lt;endl; //oder ein anderes ostream objekt
</code></pre>
<p>?</p>
</blockquote>
<p>1. deine Schleife macht kein Copy!<br />
2. es ist eher ein for_each.<br />
3. Du schreibst die Schleife <em>von Hand</em>. Handgeschriebener Code ist potenziell fehlerhaft. Wenn du fertige Funktionen (wie for_each, copy etc.) benutzt, ist das Fehlerpotential kleiner, da diese Funktionen bereits von jemand anderem ausgiebig getestet und eingesetzt wurden. Punkt 1 bestätigt sich hier eindeutig!<br />
4. was ist wenn du die gleiche Aufgabe nochmal an anderen Stellen im Projekt bewerkstelligen mußt? Mußt du natürlich die For-Schleife <em>nochmal</em> von Hand schreiben! Punkt drei wiederholt sich!<br />
5. Ich muß erst den Schleifen-Code lesen und selber interpretieren, um festzustellen, was da gemacht wird. for_each, copy etc. sind dagegen auf den ersten Blick eindeutig was sie tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1715617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1715617</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 25 May 2009 18:09:30 GMT</pubDate></item></channel></rss>