<?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[Wann ist endl gut?]]></title><description><![CDATA[<p>Hallo,<br />
ich lese extrem oft, dass man endl nur nehmen soll, wenn man es muss, aber WANN muss man denn überhaupt flushen? Wenn ich z.B. einen Errorlog habe, der sofort den jeweiligen Fehler in die Datei schreiben soll, soll ich dann endl benutzen? Oder wann muss man flushen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/290894/wann-ist-endl-gut</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 01:31:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/290894.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 05 Aug 2011 17:03:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wann ist endl gut? on Fri, 05 Aug 2011 17:03:47 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich lese extrem oft, dass man endl nur nehmen soll, wenn man es muss, aber WANN muss man denn überhaupt flushen? Wenn ich z.B. einen Errorlog habe, der sofort den jeweiligen Fehler in die Datei schreiben soll, soll ich dann endl benutzen? Oder wann muss man flushen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102375</guid><dc:creator><![CDATA[Pikkolini]]></dc:creator><pubDate>Fri, 05 Aug 2011 17:03:47 GMT</pubDate></item><item><title><![CDATA[Reply to Wann ist endl gut? on Fri, 05 Aug 2011 17:09:25 GMT]]></title><description><![CDATA[<p>Flushen sollst du wenn der Stream gepuffert ist (wie <code>std::clog</code> ) und du den Puffer &quot;leeren&quot; willst. Bei direkten Streams (wie <code>std::cerr</code> ) macht es IM(H)O keinen Sinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102377</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Fri, 05 Aug 2011 17:09:25 GMT</pubDate></item><item><title><![CDATA[Reply to Wann ist endl gut? on Fri, 05 Aug 2011 19:26:53 GMT]]></title><description><![CDATA[<p>Naja, ein std::stream Flush ist ja kein vollständiger Flush, es flusht sich dabei ja nur der C++ Teil, fsync/FlushFileBuffers wird dabei eh nicht aufgerufen. Von daher nicht SO tragisch.</p>
<p>Und zumindest cin/cout/clog flushen sich auch brav selbst wenn man \n hineintut - auch ohne std::endl.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102455</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 05 Aug 2011 19:26:53 GMT</pubDate></item><item><title><![CDATA[Reply to Wann ist endl gut? on Fri, 05 Aug 2011 19:55:07 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Naja, ein std::stream Flush ist ja kein vollständiger Flush, es flusht sich dabei ja nur der C++ Teil, fsync/FlushFileBuffers wird dabei eh nicht aufgerufen. Von daher nicht SO tragisch.</p>
<p>Und zumindest cin/cout/clog flushen sich auch brav selbst wenn man \n hineintut - auch ohne std::endl.</p>
</blockquote>
<p>Zum oberen Teil kann ich nichts sagen, aber dass sich cin und cout bei \n flushen, stimmt nicht. std::endl kann aber durch das verständlichere &quot;\n&quot; &lt;&lt; std::flush ersetzt werden. Flushen könnte man z.B. wenn man eine länger laufende Anwendung hat, die ihre Informationen auf std::cout schreibt, damit eine andere Anwendung mitlesen kann. Wenn man dann nicht flusht, muss die andere Anwendung ewig warten, bis sie die Daten lesen kann. Auf der Kommandozeile erscheint die Ausgabe aber auch ohne Flush. (Ist es das, was du mit deinem oberen Satz gemeint hast?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102473</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Fri, 05 Aug 2011 19:55:07 GMT</pubDate></item><item><title><![CDATA[Reply to Wann ist endl gut? on Fri, 05 Aug 2011 19:54:25 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Und zumindest cin/cout/clog flushen sich auch brav selbst wenn man \n hineintut - auch ohne std::endl.</p>
</blockquote>
<p>Nope. Das hat mit dem Ziel Device zu tun. Wenn es Interaktiv ist (Console) dann ja, ansonsten nein.</p>
<p>Der Standard verlangt kein bestimmtes flushen. Bis auf bei cerr, das ist unbuffered.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102474</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 05 Aug 2011 19:54:25 GMT</pubDate></item><item><title><![CDATA[Reply to Wann ist endl gut? on Fri, 05 Aug 2011 20:06:13 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Und zumindest cin/cout/clog flushen sich auch brav selbst wenn man \n hineintut - auch ohne std::endl.</p>
</blockquote>
<p>Nope. Das hat mit dem Ziel Device zu tun. Wenn es Interaktiv ist (Console) dann ja, ansonsten nein.</p>
</blockquote>
<p>Also ich erinnere mich an keine definierte Vorgabe bezüglich des Ziels und wann und wo die Streams geflusht werden müssen, nur an <code>ios::tie()</code> (und daß cin/cout das per default aktiv haben) und <code>ios::sync_with_stdio()</code> (auch per default aktiv).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102479</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 05 Aug 2011 20:06:13 GMT</pubDate></item><item><title><![CDATA[Reply to Wann ist endl gut? on Fri, 05 Aug 2011 20:31:48 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Und zumindest cin/cout/clog flushen sich auch brav selbst wenn man \n hineintut - auch ohne std::endl.</p>
</blockquote>
<p>Nope. Das hat mit dem Ziel Device zu tun. Wenn es Interaktiv ist (Console) dann ja, ansonsten nein.</p>
</blockquote>
<p>Also ich erinnere mich an keine definierte Vorgabe bezüglich des Ziels und wann und wo die Streams geflusht werden müssen, nur an <code>ios::tie()</code> (und daß cin/cout das per default aktiv haben) und <code>ios::sync_with_stdio()</code> (auch per default aktiv).</p>
</blockquote>
<p>Deshalb hab ich ja geschrieben<br />
&gt; Der Standard verlangt kein bestimmtes flushen. Bis auf bei cerr, das ist unbuffered. &lt;</p>
<p>Aber in der Praxis ist es so, dass wenn das Ziel ein Interaktives Device wie zB die Konsole ist, dass \n einen Flush bedeutet. Denn sonst sind interaktive Devices einfach nicht sinnvoll nutzbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102493</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 05 Aug 2011 20:31:48 GMT</pubDate></item><item><title><![CDATA[Reply to Wann ist endl gut? on Fri, 05 Aug 2011 20:35:34 GMT]]></title><description><![CDATA[<p>Ich würde bei einem interaktiven Device eher davon ausgehen, daß dort das tie()-Verhalten dafür sorgt, daß nichts durcheinandergerät (d.h. der Zugriff auf cin löst als erstes ein cout.flush() aus, bevor er auf Nutzer-Eingaben wartet). Aber ich kann's auch nicht in der Praxis überprüfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102494</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 05 Aug 2011 20:35:34 GMT</pubDate></item><item><title><![CDATA[Reply to Wann ist endl gut? on Fri, 05 Aug 2011 20:39:23 GMT]]></title><description><![CDATA[<p>Also in der Praxis ist es so, dass man auf der Console was sieht, sobald man ein \n schickt.<br />
Ich hatte (fälschlicherweise) angenommen, dass das Standard ist.<br />
Ich hab' auch mal irgendwo gelesen, dass das so definiert ist, aber dann muss das wohl Falschinformation gewesen sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102498</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 05 Aug 2011 20:39:23 GMT</pubDate></item><item><title><![CDATA[Reply to Wann ist endl gut? on Fri, 05 Aug 2011 21:43:51 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Der Zugriff auf cin löst als erstes ein cout.flush() aus, bevor er auf Nutzer-Eingaben wartet.</p>
</blockquote>
<p>Ja und genau das steht auch irgendwo im Standard.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102507</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 05 Aug 2011 21:43:51 GMT</pubDate></item><item><title><![CDATA[Reply to Wann ist endl gut? on Sat, 06 Aug 2011 01:00:28 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Ich würde bei einem interaktiven Device eher davon ausgehen, daß dort das tie()-Verhalten dafür sorgt, daß nichts durcheinandergerät (d.h. der Zugriff auf cin löst als erstes ein cout.flush() aus, bevor er auf Nutzer-Eingaben wartet). Aber ich kann's auch nicht in der Praxis überprüfen.</p>
</blockquote>
<p>Ja. tie ist wichtig. Aber tie alleine Reicht nicht. Stell dir zB sowas wie ping vor. Wenn da nicht jede Zeile sofort flusht, dann sieht das Ding ziemlich daemlich aus. Alle 5 Sekunden siehst du 5 neue Zeilen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Anstatt jede Sekunde 1.</p>
<p>Deshalb ist es wichtig dass Interaktive Devices bei \n flushen. Der Standard verlangt natuerlich nichts, er verbietet aber auch nichts. Aber nahezu jede Implementierung wird dieses Verhalten aufweisen - weil es anders einfach fast nie Sinn macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2102514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2102514</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sat, 06 Aug 2011 01:00:28 GMT</pubDate></item></channel></rss>