<?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[std::streambuf::in_avail () immer == 0?]]></title><description><![CDATA[<p>Hallo,</p>
<p>warum liefert mir beim folgendem Code in_avail () immer die Größe 0 zurück? Es muss sich ja wegen dem std::cin.get () noch mindestens ein Zeichen im Eingabepuffer befinden!</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int main ()
{
    std::streambuf *buffer = std::cin.rdbuf ();
    std::cin.get ();
    std::cout &lt;&lt; buffer-&gt;in_avail ()&lt;&lt; std::endl;
}
</code></pre>
<p>Bei allen anderen, möglichen Versuchen lieferte mir in_avail () immer nur 0 zurück... Ich zweifle langsam schon an der Korrektheit dieser Funktion <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="😞"
    /> Folgender Beispielcode (von <a href="http://cplusplus.com" rel="nofollow">cplusplus.com</a>) liefert auch nur 0:</p>
<pre><code class="language-cpp">streamsize size;
  char ch;

  streambuf * pbuf;
  pbuf = cin.rdbuf();

  cout &lt;&lt; &quot;Please enter some characters: &quot;;
  cin &gt;&gt; ch;

  size = pbuf-&gt;in_avail();

  cout &lt;&lt; &quot;The first character you entered is: &quot; &lt;&lt; ch &lt;&lt; endl;
  cout &lt;&lt; size &lt;&lt; &quot; additional characters in input buffer&quot; &lt;&lt; endl;
</code></pre>
<p>Wäre toll, wenn mir den Grund jemand nennen könnte, danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/196227/std-streambuf-in_avail-immer-0</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 08:23:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/196227.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 27 Oct 2007 00:18:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::streambuf::in_avail () immer == 0? on Sat, 27 Oct 2007 00:18:45 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>warum liefert mir beim folgendem Code in_avail () immer die Größe 0 zurück? Es muss sich ja wegen dem std::cin.get () noch mindestens ein Zeichen im Eingabepuffer befinden!</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int main ()
{
    std::streambuf *buffer = std::cin.rdbuf ();
    std::cin.get ();
    std::cout &lt;&lt; buffer-&gt;in_avail ()&lt;&lt; std::endl;
}
</code></pre>
<p>Bei allen anderen, möglichen Versuchen lieferte mir in_avail () immer nur 0 zurück... Ich zweifle langsam schon an der Korrektheit dieser Funktion <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="😞"
    /> Folgender Beispielcode (von <a href="http://cplusplus.com" rel="nofollow">cplusplus.com</a>) liefert auch nur 0:</p>
<pre><code class="language-cpp">streamsize size;
  char ch;

  streambuf * pbuf;
  pbuf = cin.rdbuf();

  cout &lt;&lt; &quot;Please enter some characters: &quot;;
  cin &gt;&gt; ch;

  size = pbuf-&gt;in_avail();

  cout &lt;&lt; &quot;The first character you entered is: &quot; &lt;&lt; ch &lt;&lt; endl;
  cout &lt;&lt; size &lt;&lt; &quot; additional characters in input buffer&quot; &lt;&lt; endl;
</code></pre>
<p>Wäre toll, wenn mir den Grund jemand nennen könnte, danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392821</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Sat, 27 Oct 2007 00:18:45 GMT</pubDate></item><item><title><![CDATA[Reply to std::streambuf::in_avail () immer == 0? on Sat, 27 Oct 2007 08:31:06 GMT]]></title><description><![CDATA[<p>hmm hast du mal nach &quot;Please enter some characters: &quot; ein Leerzeichen und dann ein noch ein paar Zeichen angegeben? Mach das mal ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392864</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 27 Oct 2007 08:31:06 GMT</pubDate></item><item><title><![CDATA[Reply to std::streambuf::in_avail () immer == 0? on Sat, 27 Oct 2007 10:33:20 GMT]]></title><description><![CDATA[<p>(D)evil schrieb:</p>
<blockquote>
<p>hmm hast du mal nach &quot;Please enter some characters: &quot; ein Leerzeichen und dann ein noch ein paar Zeichen angegeben? Mach das mal ...</p>
</blockquote>
<p>Dann wäre ja die Antwort auf die Frage zu leicht gewesen <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="😉"
    /> Nein, es klappt nicht, es wird immer nur 0 angezeigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392921</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Sat, 27 Oct 2007 10:33:20 GMT</pubDate></item><item><title><![CDATA[Reply to std::streambuf::in_avail () immer == 0? on Sat, 27 Oct 2007 10:36:05 GMT]]></title><description><![CDATA[<p>in_avail() ist seltsam und verhält sich nicht überall so, wie es sich verhalten soll.</p>
<p>Vllt sagt jemand was genaueres dazu ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392922</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 27 Oct 2007 10:36:05 GMT</pubDate></item><item><title><![CDATA[Reply to std::streambuf::in_avail () immer == 0? on Sat, 27 Oct 2007 11:29:47 GMT]]></title><description><![CDATA[<p>Dann erklärt sich auch, weswegen folgender Code aus den Konsolen FAQs nicht funktioniert (auf dem GCC):</p>
<pre><code class="language-cpp">std::cin.clear(); 
std::cin.ignore(std::cin.rdbuf()-&gt;in_avail()); 
std::cin.get();
</code></pre>
<p>Würde mich auch freuen, wenn jemand was Genauerer darüber wissen würde...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392949</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Sat, 27 Oct 2007 11:29:47 GMT</pubDate></item><item><title><![CDATA[Reply to std::streambuf::in_avail () immer == 0? on Sat, 27 Oct 2007 11:50:21 GMT]]></title><description><![CDATA[<p><a href="http://lists.boost.org/Archives/boost/2001/03/9190.php" rel="nofollow">http://lists.boost.org/Archives/boost/2001/03/9190.php</a> usw. einfach mal durch topic wühlen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392959</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 27 Oct 2007 11:50:21 GMT</pubDate></item><item><title><![CDATA[Reply to std::streambuf::in_avail () immer == 0? on Sat, 27 Oct 2007 12:02:27 GMT]]></title><description><![CDATA[<p>Ist das eine Anspielung auf Boost, oder soll sich in dem Thread wirklich etwas relevantes befinden? Ich sehe da nichts. Das mit dem oben gezeigten Code zum Leeren der Eingabepuffers war nur ein Beispiel, das stellt ja nicht das eigentliche Problem dar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392968</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Sat, 27 Oct 2007 12:02:27 GMT</pubDate></item><item><title><![CDATA[Reply to std::streambuf::in_avail () immer == 0? on Sat, 27 Oct 2007 12:02:12 GMT]]></title><description><![CDATA[<p>Hmm müsste eigentlich den richtigen gepostet haben ... ach kann sein das ic noch was anderes in der Zwischenablage hab ... ehm such einfach danach bei <a href="http://google.de" rel="nofollow">google.de</a> oder hier im Forum ... das hatten wir schon mehrmals ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1392970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1392970</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 27 Oct 2007 12:02:12 GMT</pubDate></item><item><title><![CDATA[Reply to std::streambuf::in_avail () immer == 0? on Sat, 27 Oct 2007 13:03:53 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>in_avail() ist seltsam und verhält sich nicht überall so, wie es sich verhalten soll.</p>
</blockquote>
<p>Nein, es verhält sich nur nicht überall so, wie man gerne hätte das es sich verhält. Der Standard sagt mit keinem Wort, dass in_avail einem sagt, ob man noch ein non-blocking read durchführen kann oder nicht. Auch muss in_avail etwaige BS-Puffer (wie z.B. Tastaturpuffer) nicht berücksichtigen. Es liefert lediglich die Anzahl der Zeichen zwischen dem get-Pointer und dem Ende des Eingabepuffers (also egptr() - gptr()). Wenn die Anzahl = 0 ist, was immer ein gültiger Wert ist (z.B. weil der Stream keinen eigenen Eingabepuffer benutzt oder die Zeichen noch im Tastaturpuffer stehen und noch nicht in den Eingabepuffer des Streams übertragen wurden), liefert in_avail() das Ergebnis von showmanyc(), was wiederum selbst lediglich schätzen soll, wieviele Zeichen noch gelesen werden können. Und 0 ist auch hier immer eine gültige Schätzung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393018</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Sat, 27 Oct 2007 13:03:53 GMT</pubDate></item><item><title><![CDATA[Reply to std::streambuf::in_avail () immer == 0? on Sat, 27 Oct 2007 14:21:08 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p>KasF schrieb:</p>
<blockquote>
<p>in_avail() ist seltsam und verhält sich nicht überall so, wie es sich verhalten soll.</p>
</blockquote>
<p>Nein, es verhält sich nur nicht überall so, wie man gerne hätte das es sich verhält. Der Standard sagt mit keinem Wort, dass in_avail einem sagt, ob man noch ein non-blocking read durchführen kann oder nicht. Auch muss in_avail etwaige BS-Puffer (wie z.B. Tastaturpuffer) nicht berücksichtigen. Es liefert lediglich die Anzahl der Zeichen zwischen dem get-Pointer und dem Ende des Eingabepuffers (also egptr() - gptr()). Wenn die Anzahl = 0 ist, was immer ein gültiger Wert ist (z.B. weil der Stream keinen eigenen Eingabepuffer benutzt oder die Zeichen noch im Tastaturpuffer stehen und noch nicht in den Eingabepuffer des Streams übertragen wurden), liefert in_avail() das Ergebnis von showmanyc(), was wiederum selbst lediglich schätzen soll, wieviele Zeichen noch gelesen werden können. Und 0 ist auch hier immer eine gültige Schätzung.</p>
</blockquote>
<p>Auf so ne Antwort habe ich mal gewartet <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393064</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 27 Oct 2007 14:21:08 GMT</pubDate></item><item><title><![CDATA[Reply to std::streambuf::in_avail () immer == 0? on Sat, 27 Oct 2007 14:26:42 GMT]]></title><description><![CDATA[<p>Jap, danke HumeSikkins. Teile der Stdlib sind ja schon ganzschön verwirrend. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393069</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Sat, 27 Oct 2007 14:26:42 GMT</pubDate></item></channel></rss>