<?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[Fehlerbehandlung von cin]]></title><description><![CDATA[<p>Aloha,</p>
<p>ich will was mit cin von der Konsole einlesen. Wenn ich einen int erwarte, aber ein Buchstabe eingegeben wird, kann ich keine neue Eingabe mit cin anfordern ...</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

int main (void)
{
	int a = 0;

	while(1)
	{
		cout &lt;&lt; &quot;gib was ein:\n&quot;;
		if(!(cin &gt;&gt; a))
			cerr &lt;&lt; &quot;Fehler&quot; &lt;&lt; endl;
		if(a == 9)
			break;
		cout &lt;&lt; &quot;Eingabe war: &quot; &lt;&lt; a &lt;&lt; endl;
	}
}
</code></pre>
<p>Wenn ich zB 'a' eingebe, dann wird ständig die Schleife durchlaufen (mit der Ausgabe: Fehler), ohne eine neue Eingabe zu ermöglichen ...<br />
Auch ein cin.clear(); cin.ignore(); in Verbindung mit cerr ... helfen nicht.<br />
Ich möchte aber gerne, daß die Aufforderung, etwas einzugeben, ausgegeben wird, und dann eine neue Eingabe möglich ist.<br />
Was muß ich dafür tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/226019/fehlerbehandlung-von-cin</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 06:06:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/226019.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Oct 2008 11:22:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehlerbehandlung von cin on Tue, 28 Oct 2008 11:22:17 GMT]]></title><description><![CDATA[<p>Aloha,</p>
<p>ich will was mit cin von der Konsole einlesen. Wenn ich einen int erwarte, aber ein Buchstabe eingegeben wird, kann ich keine neue Eingabe mit cin anfordern ...</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

int main (void)
{
	int a = 0;

	while(1)
	{
		cout &lt;&lt; &quot;gib was ein:\n&quot;;
		if(!(cin &gt;&gt; a))
			cerr &lt;&lt; &quot;Fehler&quot; &lt;&lt; endl;
		if(a == 9)
			break;
		cout &lt;&lt; &quot;Eingabe war: &quot; &lt;&lt; a &lt;&lt; endl;
	}
}
</code></pre>
<p>Wenn ich zB 'a' eingebe, dann wird ständig die Schleife durchlaufen (mit der Ausgabe: Fehler), ohne eine neue Eingabe zu ermöglichen ...<br />
Auch ein cin.clear(); cin.ignore(); in Verbindung mit cerr ... helfen nicht.<br />
Ich möchte aber gerne, daß die Aufforderung, etwas einzugeben, ausgegeben wird, und dann eine neue Eingabe möglich ist.<br />
Was muß ich dafür tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1605989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1605989</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 28 Oct 2008 11:22:17 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehandlung von cin on Tue, 28 Oct 2008 11:23:47 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>siehe hier: <a href="http://c-plusplus.net/forum/viewtopic-var-p-is-1319931.html" rel="nofollow">http://c-plusplus.net/forum/viewtopic-var-p-is-1319931.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1605992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1605992</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 28 Oct 2008 11:23:47 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehandlung von cin on Tue, 28 Oct 2008 11:27:27 GMT]]></title><description><![CDATA[<p>So:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;limits&gt;

using namespace std;

int main (void)
{
    int a = 0;

    while(1)
    {
        cout &lt;&lt; &quot;gib was ein:\n&quot;;
        if(!(cin &gt;&gt; a))
        {
            cin.clear(); //Fehlerflags loeschen
            cin.ignore(numeric_limits&lt;streamsize&gt;::max(), '\n'); //alles Gelumpe im stream wegschmeissen
            cerr &lt;&lt; &quot;Fehler&quot; &lt;&lt; endl;
        }
        if(a == 9)
            break;
        cout &lt;&lt; &quot;Eingabe war: &quot; &lt;&lt; a &lt;&lt; endl;
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1605996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1605996</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 28 Oct 2008 11:27:27 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehandlung von cin on Tue, 28 Oct 2008 11:59:10 GMT]]></title><description><![CDATA[<p>Vielen Dank!</p>
<p>Aber warum funktioniert: cin.clear(); cin.ignore(); nicht? Das sollte doch auch ein einzelnes Zeichen aus dem Puffer werfen können? So funktioniert es zB. mit cin.ignore(1, '\n');, was ja lediglich den Vorgabewert für den Delimiter von EOF auf '\n' ändert?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606013</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 28 Oct 2008 11:59:10 GMT</pubDate></item></channel></rss>