<?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::cin.ignore]]></title><description><![CDATA[<p>Ich weiss, dass dieses Thema hier schonmal besprochen wurde. Und dies sehr sehr oft; aber mein anliegen ist ein wenig anders.<br />
Hier im forum wurde zum &quot;offenhalten der Konsole&quot; schon mal folgendes empfolen:<br />
getchar()<br />
getch()<br />
std::cin.get()<br />
sowie dies hier:</p>
<pre><code class="language-cpp">std::cin.clear();
std::cin.ignore(std::cin.rdbuf()-&gt;in_avail());
std::cin.get();
</code></pre>
<p>so nun ist es ja so das cin's rdbuf wie folgt aussieht:<br />
basic_streambuf&lt;charT,traits&gt;* rdbuf() const;<br />
und sich basic_streambuf's in_avail wiederum wie folgt verhält</p>
<blockquote>
<p>streamsize in_avail():<br />
If a read position is available, returns the number of available characters in the input sequence. Otherwise, calls the protected function showmanyc() .</p>
</blockquote>
<p>und ggf siehts mit showmanyc wie folgt aus :</p>
<blockquote>
<p>Returns the number of characters available in the internal buffer, or returns -1.</p>
</blockquote>
<p>Meine Anliegen nun: in_avail kann ja afaik ggf nun auch 0 zurückgeben.<br />
Nun hörte ich,dass ignore() sich für 0 bei verschiedenen implementierungen auch verschieden verhalten kann.<br />
Um dies zum umgehen hab ich mal eine ähnliche version gesehen die ich zu dieser hier geändert habe :</p>
<pre><code class="language-cpp">//#include&lt;limits&gt;
   void wait(){
       std::cin.clear();
       std::cin.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(),'\n');
       std::cin.get();//oder std::cin.ignore();
   }
</code></pre>
<p>denn so wird ja die maxmimale anzahl igoriert bis zum '\n' welches ja ausgelöst wird wenn man seine Eingabe macht.</p>
<p>Aber erstens weiss ich nicht ob nun nen std::cin.get(); oder std::cin.ignore();<br />
als letztes sinnvoller ist. Bei mir verhält es sich gleich aber ich würde gern eure Meinung hören, da ich nunja kein echter experte bin und mich mit dem Verhalten der Funktion ( ignore() ) vor allem bei verschiedenen Implementierungen (von ignore wenn in_avail() 0 liefert ) nicht auskenne bzw mir nicht sicher bin ob es denn auch wirklich anders ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/119045/std-cin-ignore</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 18:24:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/119045.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 26 Aug 2005 22:06:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::cin.ignore on Fri, 26 Aug 2005 22:07:01 GMT]]></title><description><![CDATA[<p>Ich weiss, dass dieses Thema hier schonmal besprochen wurde. Und dies sehr sehr oft; aber mein anliegen ist ein wenig anders.<br />
Hier im forum wurde zum &quot;offenhalten der Konsole&quot; schon mal folgendes empfolen:<br />
getchar()<br />
getch()<br />
std::cin.get()<br />
sowie dies hier:</p>
<pre><code class="language-cpp">std::cin.clear();
std::cin.ignore(std::cin.rdbuf()-&gt;in_avail());
std::cin.get();
</code></pre>
<p>so nun ist es ja so das cin's rdbuf wie folgt aussieht:<br />
basic_streambuf&lt;charT,traits&gt;* rdbuf() const;<br />
und sich basic_streambuf's in_avail wiederum wie folgt verhält</p>
<blockquote>
<p>streamsize in_avail():<br />
If a read position is available, returns the number of available characters in the input sequence. Otherwise, calls the protected function showmanyc() .</p>
</blockquote>
<p>und ggf siehts mit showmanyc wie folgt aus :</p>
<blockquote>
<p>Returns the number of characters available in the internal buffer, or returns -1.</p>
</blockquote>
<p>Meine Anliegen nun: in_avail kann ja afaik ggf nun auch 0 zurückgeben.<br />
Nun hörte ich,dass ignore() sich für 0 bei verschiedenen implementierungen auch verschieden verhalten kann.<br />
Um dies zum umgehen hab ich mal eine ähnliche version gesehen die ich zu dieser hier geändert habe :</p>
<pre><code class="language-cpp">//#include&lt;limits&gt;
   void wait(){
       std::cin.clear();
       std::cin.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(),'\n');
       std::cin.get();//oder std::cin.ignore();
   }
</code></pre>
<p>denn so wird ja die maxmimale anzahl igoriert bis zum '\n' welches ja ausgelöst wird wenn man seine Eingabe macht.</p>
<p>Aber erstens weiss ich nicht ob nun nen std::cin.get(); oder std::cin.ignore();<br />
als letztes sinnvoller ist. Bei mir verhält es sich gleich aber ich würde gern eure Meinung hören, da ich nunja kein echter experte bin und mich mit dem Verhalten der Funktion ( ignore() ) vor allem bei verschiedenen Implementierungen (von ignore wenn in_avail() 0 liefert ) nicht auskenne bzw mir nicht sicher bin ob es denn auch wirklich anders ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859383</guid><dc:creator><![CDATA[shapeless]]></dc:creator><pubDate>Fri, 26 Aug 2005 22:07:01 GMT</pubDate></item><item><title><![CDATA[Reply to std::cin.ignore on Sun, 28 Aug 2005 15:33:23 GMT]]></title><description><![CDATA[<p>push ...<br />
// hmm irgendjemand der mir bei dieser Sache helfen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/860147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/860147</guid><dc:creator><![CDATA[shapeless]]></dc:creator><pubDate>Sun, 28 Aug 2005 15:33:23 GMT</pubDate></item><item><title><![CDATA[Reply to std::cin.ignore on Sun, 28 Aug 2005 16:16:09 GMT]]></title><description><![CDATA[<blockquote>
<p>basic_istream&lt;charT,traits&gt;&amp;<br />
ignore(streamsize n = 1, int_type delim = traits::eof());<br />
24 Effects: Behaves as an unformatted input function (as described in 27.6.1.3, paragraph 1). After constructing<br />
a sentry object, extracts characters and discards them. Characters are extracted until any of the following<br />
occurs:<br />
— if n != numeric_limits&lt;streamsize&gt;::max() (18.2.1), n characters are extracted<br />
— end-of-file occurs on the input sequence (in which case the function calls setstate(eofbit),<br />
which may throw ios_base::failure (27.4.4.3));<br />
— c == delim for the next available input character c (in which case c is extracted).<br />
25 Notes: The last condition will never occur if delim == traits::eof().<br />
26 Returns: *this.</p>
</blockquote>
<p>Bei Null darf also eigentlich gar nix passieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/860166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/860166</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Sun, 28 Aug 2005 16:16:09 GMT</pubDate></item></channel></rss>