<?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 puffer leeren - ENDLOSSCHLEIFE]]></title><description><![CDATA[<p>Hallo auch,</p>
<p>hier mein Code:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

int main()
{
	int zahl=0;

	// Variante 1 - Fußgesteuerte While-Schleife
	do
	{
		cin.clear();							// zuerst Failbits zurücksetzen
		cin.ignore( cin.rdbuf()-&gt;in_avail() );	// dann Puffer leeren

		// In dieser Reihenfolge klappt es nicht, warum nicht???
		/*		
		cin.ignore( cin.rdbuf()-&gt;in_avail() );	// zuerst Puffer leeren
		cin.clear();							// dann Failbits zurücksetzen
		*/

		cout &lt;&lt; &quot;Zahl eingeben: &quot; &lt;&lt; endl;
		cin &gt;&gt; zahl;	

	} while( cin.fail() );

	cout &lt;&lt; &quot;Variante 1 : Geschafft! Ihre eingegebene Zahl: &quot; &lt;&lt; zahl &lt;&lt; endl;

	cout &lt;&lt; &quot;Zahl eingeben: &quot; &lt;&lt; endl;
	// Variante 2 - Kopfgesteuerte Whileschleife
	while( !(cin&gt;&gt;zahl) ) // Solange cin Fail zurückliefert
	{
		cin.clear();							// zuerst Failbits zurücksetzen
		cin.ignore( cin.rdbuf()-&gt;in_avail() );	// dann Puffer leeren

		// In dieser Reihenfolge klappt es nicht, warum nicht???
		/*	
		cin.ignore( cin.rdbuf()-&gt;in_avail() );	// zuerst Puffer leeren
		cin.clear();							// dann Failbits zurücksetzen
		*/

		cout &lt;&lt; &quot;Zahl eingeben: &quot; &lt;&lt; endl;
	}
	cout &lt;&lt; &quot;Variante 2 : Geschafft! Ihre eingegebene Zahl: &quot; &lt;&lt; zahl &lt;&lt; endl;

	system( &quot;PAUSE&quot; );
	return 0;
}
</code></pre>
<p>Im Code deuten Kommentare mein Problem an, ich würde gerne wissen, warum ich in einer Endlosschliefe hängen bleibe, wenn ich die Variation</p>
<pre><code>cin.ignore( cin.rdbuf()-&gt;in_avail() );	// zuerst Puffer leeren
		cin.clear();
</code></pre>
<p>verwende.</p>
<p>Zuerst Puffer leeren, danach die Anweisung cin.clear() hält mich in der Schleife fest, kann mir das bitte jemand erklären? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Vielen Dank schonmal!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/317620/cin-puffer-leeren-endlosschleife</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Jul 2026 19:29:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/317620.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 14 Jun 2013 15:34:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to cin puffer leeren - ENDLOSSCHLEIFE on Fri, 14 Jun 2013 15:34:31 GMT]]></title><description><![CDATA[<p>Hallo auch,</p>
<p>hier mein Code:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

int main()
{
	int zahl=0;

	// Variante 1 - Fußgesteuerte While-Schleife
	do
	{
		cin.clear();							// zuerst Failbits zurücksetzen
		cin.ignore( cin.rdbuf()-&gt;in_avail() );	// dann Puffer leeren

		// In dieser Reihenfolge klappt es nicht, warum nicht???
		/*		
		cin.ignore( cin.rdbuf()-&gt;in_avail() );	// zuerst Puffer leeren
		cin.clear();							// dann Failbits zurücksetzen
		*/

		cout &lt;&lt; &quot;Zahl eingeben: &quot; &lt;&lt; endl;
		cin &gt;&gt; zahl;	

	} while( cin.fail() );

	cout &lt;&lt; &quot;Variante 1 : Geschafft! Ihre eingegebene Zahl: &quot; &lt;&lt; zahl &lt;&lt; endl;

	cout &lt;&lt; &quot;Zahl eingeben: &quot; &lt;&lt; endl;
	// Variante 2 - Kopfgesteuerte Whileschleife
	while( !(cin&gt;&gt;zahl) ) // Solange cin Fail zurückliefert
	{
		cin.clear();							// zuerst Failbits zurücksetzen
		cin.ignore( cin.rdbuf()-&gt;in_avail() );	// dann Puffer leeren

		// In dieser Reihenfolge klappt es nicht, warum nicht???
		/*	
		cin.ignore( cin.rdbuf()-&gt;in_avail() );	// zuerst Puffer leeren
		cin.clear();							// dann Failbits zurücksetzen
		*/

		cout &lt;&lt; &quot;Zahl eingeben: &quot; &lt;&lt; endl;
	}
	cout &lt;&lt; &quot;Variante 2 : Geschafft! Ihre eingegebene Zahl: &quot; &lt;&lt; zahl &lt;&lt; endl;

	system( &quot;PAUSE&quot; );
	return 0;
}
</code></pre>
<p>Im Code deuten Kommentare mein Problem an, ich würde gerne wissen, warum ich in einer Endlosschliefe hängen bleibe, wenn ich die Variation</p>
<pre><code>cin.ignore( cin.rdbuf()-&gt;in_avail() );	// zuerst Puffer leeren
		cin.clear();
</code></pre>
<p>verwende.</p>
<p>Zuerst Puffer leeren, danach die Anweisung cin.clear() hält mich in der Schleife fest, kann mir das bitte jemand erklären? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Vielen Dank schonmal!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331194</guid><dc:creator><![CDATA[Exilius]]></dc:creator><pubDate>Fri, 14 Jun 2013 15:34:31 GMT</pubDate></item><item><title><![CDATA[Reply to cin puffer leeren - ENDLOSSCHLEIFE on Fri, 14 Jun 2013 15:36:55 GMT]]></title><description><![CDATA[<p>Weil in_avail nicht das macht, was du denkst. In der Regel gibt es einfach 0 zurück. Es gibt keinen Eingabepuffer wie du ihn verstehst (zumindest nicht auf der Ebene, auf der der Eingabestream arbeitet), daher ist das Vorhaben von vornherein zum Scheitern verurteilt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331195</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 14 Jun 2013 15:36:55 GMT</pubDate></item><item><title><![CDATA[Reply to cin puffer leeren - ENDLOSSCHLEIFE on Fri, 14 Jun 2013 18:18:29 GMT]]></title><description><![CDATA[<p>Ich habe in_avail schon richtig verstanden und benutze es auch richtig.<br />
Habe das Problem gefunden, cin.ignore() funktioniert nur, wenn cin.good() true ergibt.</p>
<blockquote>
<p>istream&amp; ignore (streamsize n = 1, int delim = EOF);<br />
(<a href="http://Cplusplus.com" rel="nofollow">Cplusplus.com</a>)</p>
<p>[...]<br />
Internally, the function accesses the input sequence by first constructing a sentry object (with noskipws set to true). Then (if <strong>good</strong>), it extracts characters from its associated stream buffer object as if calling its member functions sbumpc or sgetc, and finally destroys the sentry object before returning.<br />
[...]</p>
</blockquote>
<p>Darum muss ZUERST cin.clear() ausgeführt werden und dann verwirft cin.ignore die im Puffer liegenden CHARACTER.</p>
<p>Trotzdem vielen Dank für die rasche Hilfe,<br />
tolles Support, bin angenehm überrascht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331222</guid><dc:creator><![CDATA[Exilius]]></dc:creator><pubDate>Fri, 14 Jun 2013 18:18:29 GMT</pubDate></item><item><title><![CDATA[Reply to cin puffer leeren - ENDLOSSCHLEIFE on Wed, 11 Jun 2014 23:29:59 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331226</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Wed, 11 Jun 2014 23:29:59 GMT</pubDate></item><item><title><![CDATA[Reply to cin puffer leeren - ENDLOSSCHLEIFE on Fri, 14 Jun 2013 22:25:52 GMT]]></title><description><![CDATA[<p>Ach so, ich verstehe. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /><br />
Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2331263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2331263</guid><dc:creator><![CDATA[Exilius]]></dc:creator><pubDate>Fri, 14 Jun 2013 22:25:52 GMT</pubDate></item></channel></rss>