<?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[endl leert Ausgabebuffer]]></title><description><![CDATA[<p>Hi ihr,</p>
<p>Habe gerade gelesen, dass der Manipulator 'endl' den Ausgabebuffer leert.<br />
Das bedeutet, dass wenn ich endl weglasse der Ausgabebuffer nicht geleert wird bleibt er erhalten und müsste bei einer weiteren Ausgabe auf ein neues eine Fehlerhafte Ausgabe erzeugen.</p>
<p>Habe gedacht, dass das logisch klingt doch folgendes Programm von mir läuft einwandfrei.</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;
int main(void)
{
   cout &lt;&lt; &quot;HALLO WELT\n&quot;;
   cout &lt;&lt; &quot;GUTEN ABEND\n&quot;;
   system(&quot;Pause&quot;);    
}
</code></pre>
<p>Weiß jemand ein Beispiel, welches verdeutlicht, wie wichtig es ist, dass 'endl'|'flush' oder 'ends' geschrieben wird.</p>
<p>Gut wäre es auch, wenn ein Beispiel da wäre, was veranschaulicht, was passiert, wenn ich den Ausgabebuffer vom Eingabebuffer trenne, durch cin.tie(0);</p>
<p>cya</p>
<p>David</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/198275/endl-leert-ausgabebuffer</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 23:17:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/198275.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 20 Nov 2007 10:23:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to endl leert Ausgabebuffer on Tue, 20 Nov 2007 10:24:29 GMT]]></title><description><![CDATA[<p>Hi ihr,</p>
<p>Habe gerade gelesen, dass der Manipulator 'endl' den Ausgabebuffer leert.<br />
Das bedeutet, dass wenn ich endl weglasse der Ausgabebuffer nicht geleert wird bleibt er erhalten und müsste bei einer weiteren Ausgabe auf ein neues eine Fehlerhafte Ausgabe erzeugen.</p>
<p>Habe gedacht, dass das logisch klingt doch folgendes Programm von mir läuft einwandfrei.</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;
int main(void)
{
   cout &lt;&lt; &quot;HALLO WELT\n&quot;;
   cout &lt;&lt; &quot;GUTEN ABEND\n&quot;;
   system(&quot;Pause&quot;);    
}
</code></pre>
<p>Weiß jemand ein Beispiel, welches verdeutlicht, wie wichtig es ist, dass 'endl'|'flush' oder 'ends' geschrieben wird.</p>
<p>Gut wäre es auch, wenn ein Beispiel da wäre, was veranschaulicht, was passiert, wenn ich den Ausgabebuffer vom Eingabebuffer trenne, durch cin.tie(0);</p>
<p>cya</p>
<p>David</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1406431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1406431</guid><dc:creator><![CDATA[777]]></dc:creator><pubDate>Tue, 20 Nov 2007 10:24:29 GMT</pubDate></item><item><title><![CDATA[Reply to endl leert Ausgabebuffer on Tue, 20 Nov 2007 11:08:02 GMT]]></title><description><![CDATA[<p>'endl' erzeugt intern einen Zeilenumbruch und ruft dann die Methode flush() auf, welche die Ausgabe erzwingt.</p>
<p>Sobald aber der interne Puffer voll ist, wird automatisch ein flush() erzeugt, d.h. die Ausgaben werden niemals überschrieben.</p>
<p>Sinnvoll sind die flush() Aufrufe z.B. bei Log-Dateien, so daß die Daten sofort rausgeschrieben werden (und nicht erst wenn zufällig der Ausgabepuffer voll ist).<br />
Und bei Multithreading-Programmen kann es Sinn machen, dies zu erzwingen (wobei es ohne explizites Locking gerade dort zu abgehackten Texten kommen kann - aber es wird niemals der Puffer geleert, ohne vorher ausgegeben worden zu sein).</p>
<p>Und bei cin.tie(0) müßtest du selber für die Synchronisation sorgen:</p>
<pre><code class="language-cpp">cin.tie(0);
cout &lt;&lt; &quot;Gib Text ein:&quot;;
cin &gt;&gt; sText;
</code></pre>
<p>Nun könnte es passieren, daß der Text nicht vorher ausgegeben wird (habe ich aber selber auch noch nicht ausprobiert).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1406466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1406466</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Tue, 20 Nov 2007 11:08:02 GMT</pubDate></item><item><title><![CDATA[Reply to endl leert Ausgabebuffer on Tue, 20 Nov 2007 11:14:49 GMT]]></title><description><![CDATA[<p>Das Programm stört es nicht, wann und ob der Ausgabepuffer geleert wird (das macht der Stream auch eigenständig, wenn er keinen Platz mehr hat - bzw. spätestens im Destruktor). Interessant wird es nzur, wenn dir wichtig ist, wann die Ausgabe durchkommt (oder die Möglichkeit besteht, daß das Programm unvorbereitet abstürzt):</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;
int main(void)
{
   cout &lt;&lt; &quot;HALLO WELT\n&quot;;
   cout &lt;&lt; &quot;GUTEN ABEND\n&quot;;
   abort();//beendet das Programm SOFORT - ohne Aufräumarbeiten
}
</code></pre>
<p>(starte dieses Programm mal aus der Eingabeaufforderung - da bestehen gute Chancen, daß nur Teile der Ausgabe durchkommen)</p>
<p>@cin.tie(): tie() bewirkt auch ein automatisches flush des angebundenen Streams, bevor etwas mit dem &quot;bindenden&quot; Stream gemacht wird - im Fall cin/cout bewirkt es, daß die Eingabe-Anweisungen immer zu den Eingaben passen:</p>
<pre><code class="language-cpp">//cin.tie(0);
cout&lt;&lt;&quot;bitte erste Zahl eingeben:&quot;
cin&gt;&gt;i1;
cout&lt;&lt;&quot;bitte zweite Zahl eingeben:&quot;
cin&gt;&gt;i2;
</code></pre>
<p>(wenn du cin und cout entkoppelst, wartet das Programm erst auf deine Eingaben und teilt dir dann mit, was es erwartet hätte)</p>
<p>PS: end<em>s</em> brauchst du normalerweise gar nicht - das war nur interessant mit char*-Streams, um der Ausgabe einen Null-Terminator anzuhängen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1406471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1406471</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 20 Nov 2007 11:14:49 GMT</pubDate></item></channel></rss>