<?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[cin.rdbuf()]]></title><description><![CDATA[<p>Ich verstehe da was nicht, und zwar, schätzungsweiße es steht noch etwas im cin-Puffer, und ich möchte schaun was da drin steht. Mit dem Befehl cin.rdbuf() kann ich den Inhalt vom cin-Puffer auslesen. Also mach ich einfach:</p>
<pre><code class="language-cpp">...
cout &lt;&lt; cin.rdbuf() &lt;&lt; &quot;\n&quot;;
...
</code></pre>
<p>So, jetzt wird mir der Inhalt vom cin-Puffer ausgelsen. Schön und gut, aber irgend wie bleibt der immer danach hängen, also da ist halt jetzt noch so eine Eingabe Zeile da, und die geht nicht mehr weg. Wie so nä Endlosch Eingabe Schleife.......ich will aber das mein Programm doch ganz normal weiter läuft.<br />
Weiß jemand was ich meine?!</p>
<p>Wie kann ich den cin-Puffer Inhalt auslesen, ohne das danach diese blöde Eingabe Endlosschleife is.....oder wie man das auch immer nennen soll.<br />
Ich will zumindestens nur die Ausgabe vom Puffer mehr net...<br />
Hoffentlich kann mir jemadn helfen.<br />
MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/199738/cin-rdbuf</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 21:19:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199738.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 06 Dec 2007 16:19:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to cin.rdbuf() on Thu, 06 Dec 2007 16:19:10 GMT]]></title><description><![CDATA[<p>Ich verstehe da was nicht, und zwar, schätzungsweiße es steht noch etwas im cin-Puffer, und ich möchte schaun was da drin steht. Mit dem Befehl cin.rdbuf() kann ich den Inhalt vom cin-Puffer auslesen. Also mach ich einfach:</p>
<pre><code class="language-cpp">...
cout &lt;&lt; cin.rdbuf() &lt;&lt; &quot;\n&quot;;
...
</code></pre>
<p>So, jetzt wird mir der Inhalt vom cin-Puffer ausgelsen. Schön und gut, aber irgend wie bleibt der immer danach hängen, also da ist halt jetzt noch so eine Eingabe Zeile da, und die geht nicht mehr weg. Wie so nä Endlosch Eingabe Schleife.......ich will aber das mein Programm doch ganz normal weiter läuft.<br />
Weiß jemand was ich meine?!</p>
<p>Wie kann ich den cin-Puffer Inhalt auslesen, ohne das danach diese blöde Eingabe Endlosschleife is.....oder wie man das auch immer nennen soll.<br />
Ich will zumindestens nur die Ausgabe vom Puffer mehr net...<br />
Hoffentlich kann mir jemadn helfen.<br />
MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1415984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415984</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Thu, 06 Dec 2007 16:19:10 GMT</pubDate></item><item><title><![CDATA[Reply to cin.rdbuf() on Thu, 06 Dec 2007 22:11:43 GMT]]></title><description><![CDATA[<p>Hallo Stromberg,</p>
<p>cin.rdbuf() liest zunächst nichts, sondern gibt Dir den dem cin-istream unterlagerten streambuf. Die Konstruktion</p>
<pre><code class="language-cpp">cout &lt;&lt; cin.rdbuf();
</code></pre>
<p>bleibt immer auf der Eingabe hängen, weil der streambuf hier bis zum Ende gelesen wird. Nur cin kennt kein Ende; sind keine Zeichen mehr verfügbar, so wartet er auf eine neue Eingabe.</p>
<p>Wenn Du eine Zeile lesen willst, ist</p>
<pre><code class="language-cpp">string line;
    getline( cin, line );
</code></pre>
<p>der normale Weg.</p>
<p>Willst Du die Zeichen aus cin über den Streambuf lesen, so wäre dies i.A. eine Möglichkeit:</p>
<pre><code class="language-cpp">cin.rdbuf()-&gt;sgetc();       // blockiert bis Eingabe, ohne ein Zeichen zu konsumieren
    cout &lt;&lt; &quot;--- begin Ausgabe&quot; &lt;&lt; endl;
    for( streamsize n = cin.rdbuf()-&gt;in_avail(); n; --n )
    {
        cout &lt;&lt; char( cin.rdbuf()-&gt;sbumpc() );
    }
    cout &lt;&lt; &quot;--- end&quot; &lt;&lt; endl;
</code></pre>
<p>Das sgetc() am Anfang liest das erste Zeichen ohne den Lesezeiger zu inkrementieren. Mit diesem Trick bringt man das Programm dazu auf eine Eingabe zu warten; die mit newline abgeschlossen wird. Erst dann kann das erste Zeichen und damit alle anderen der Zeile gelesen werden.<br />
sbumpc() liest das aktuelle Zeichen und inkrementiert den Lesezeiger.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416203</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Thu, 06 Dec 2007 22:11:43 GMT</pubDate></item><item><title><![CDATA[Reply to cin.rdbuf() on Fri, 07 Dec 2007 12:43:24 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>in_avail() liefert leider nicht in allen Implementierungen das selbe. In der<br />
FAQ gibt es glaub ich irgendwo einen Beitrag dazu bzw. wenn ihr mal dieses<br />
Unterforum danach durchsucht, dann duerftet ihr auch einen Thread dazu finden.</p>
<p>Ich weiss nicht mehr genau, aber irgendwo wurde auch ein Workarround gepostet.</p>
<p>gruss<br />
v R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416479</guid><dc:creator><![CDATA[virtuell Realisticer]]></dc:creator><pubDate>Fri, 07 Dec 2007 12:43:24 GMT</pubDate></item></channel></rss>