<?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[Problem mit iostream]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich würde gern eine Zahl einlesen, komme aber schon mit der Fehlerbehandlung nicht klar:</p>
<pre><code class="language-cpp">int x;

do {
  cin.clear();
  cout &lt;&lt; &quot;Bitte Zahl eingeben: &quot;;
  cin &gt;&gt; x;
} while (!cin.fail());
</code></pre>
<p>Das Problem ist nur: Wenn ich keine Zahl eingebe (z.B. a) dann komme ich in eine Endlosschleife und das Programm gibt die ganze Zeit die Aufforderung aus. Warum ist das denn so? Ich könnte mir vorstellen, dass die Eingabe nicht aus dem Stream entfernt wurde, weil das Lesen fehlgeschlagen ist, und somit die falsche Eingabe immer wieder gelesen wird. Nur wie mache ich das richtig?</p>
<p>Danke, Nybbs</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/249186/problem-mit-iostream</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 16:19:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/249186.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Sep 2009 17:27:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit iostream on Thu, 03 Sep 2009 17:27:54 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich würde gern eine Zahl einlesen, komme aber schon mit der Fehlerbehandlung nicht klar:</p>
<pre><code class="language-cpp">int x;

do {
  cin.clear();
  cout &lt;&lt; &quot;Bitte Zahl eingeben: &quot;;
  cin &gt;&gt; x;
} while (!cin.fail());
</code></pre>
<p>Das Problem ist nur: Wenn ich keine Zahl eingebe (z.B. a) dann komme ich in eine Endlosschleife und das Programm gibt die ganze Zeit die Aufforderung aus. Warum ist das denn so? Ich könnte mir vorstellen, dass die Eingabe nicht aus dem Stream entfernt wurde, weil das Lesen fehlgeschlagen ist, und somit die falsche Eingabe immer wieder gelesen wird. Nur wie mache ich das richtig?</p>
<p>Danke, Nybbs</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1771763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1771763</guid><dc:creator><![CDATA[Nybbs]]></dc:creator><pubDate>Thu, 03 Sep 2009 17:27:54 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit iostream on Thu, 03 Sep 2009 17:50:33 GMT]]></title><description><![CDATA[<p>Nybbs schrieb:</p>
<blockquote>
<p>Ich könnte mir vorstellen, dass die Eingabe nicht aus dem Stream entfernt wurde, weil das Lesen fehlgeschlagen ist, und somit die falsche Eingabe immer wieder gelesen wird.</p>
</blockquote>
<p>Soweit ich weiß ist es genau das, ja. Abhilfe sollte<br />
<code>cin.ignore(cin.rdbuf()-&gt;in_avail(), '\n');</code><br />
schaffen. Ich hörte mal, dass <code>cin.rdbuf()-&gt;in_avail()</code> manchmal nicht &quot;richtig&quot; implementiert ist, Abhilfe schafft dann eine entsprechend große Zahl (z.B. <code>std::numeric_limits&lt;std::streamsize&gt;::max()</code> ).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1771777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1771777</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Thu, 03 Sep 2009 17:50:33 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit iostream on Thu, 03 Sep 2009 18:07:06 GMT]]></title><description><![CDATA[<p>Hat funktioniert, danke. Aber darauf muss man erstmal kommen. <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/1771790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1771790</guid><dc:creator><![CDATA[Nybbs]]></dc:creator><pubDate>Thu, 03 Sep 2009 18:07:06 GMT</pubDate></item></channel></rss>