<?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 soll nur gültige Eingaben zulassen.]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe ein richtiges Problem das mich zur Verzweiflung treibt...</p>
<p>Ich möchte das der Benutzer solange aufgefordert wird bis er eine Zahl zwischen 0 und 4 eingibt. Das ist auch nicht das Problem mit einer do-while Schleife. Jedoch wird ein String anstatt einer Zahl eingegeben, hängt sich das Programm in der do-while Schleife regelrecht auf und ich weiß echt nicht mehr weiter, wie das richtig gehen soll.</p>
<p>Ich habe auf <a href="http://cppreference.com" rel="nofollow">cppreference.com</a> mal was rumgestöbert und daraus ist das entstanden.</p>
<pre><code class="language-cpp">unsigned long id = 0;

    bool bad_input = false;

    do
    {
        bad_input = false;

        cout &lt;&lt; &quot;id: &quot;;
        cin &gt;&gt; id;

        if (!cin.fail () &amp;&amp; id &lt;= num_template_)
            break;

        bad_input = true;
        cin.clear ();
        cin.ignore (numeric_limits&lt;unsigned long&gt;::max (), '\n');
    }
    while (bad_input);
</code></pre>
<p>Doch das geht nicht, fail schlägt nicht an, der Eingabepuffer wird nicht geleert und ich werde regelrecht erschlagen mit &quot;id: &quot;, was tausende von Male auf dem Bildschirm draufgehauen wird, ohne das ich ne Eingabe tätigen kann. <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="😞"
    /></p>
<p>Jemand eine Idee zu meinem Problem?</p>
<p>Schon mal vielen vielen Dank im voraus <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>Schönen Abend noch!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/180106/cin-soll-nur-gültige-eingaben-zulassen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 14:36:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180106.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 28 Apr 2007 20:47:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to cin soll nur gültige Eingaben zulassen. on Sat, 28 Apr 2007 20:47:51 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe ein richtiges Problem das mich zur Verzweiflung treibt...</p>
<p>Ich möchte das der Benutzer solange aufgefordert wird bis er eine Zahl zwischen 0 und 4 eingibt. Das ist auch nicht das Problem mit einer do-while Schleife. Jedoch wird ein String anstatt einer Zahl eingegeben, hängt sich das Programm in der do-while Schleife regelrecht auf und ich weiß echt nicht mehr weiter, wie das richtig gehen soll.</p>
<p>Ich habe auf <a href="http://cppreference.com" rel="nofollow">cppreference.com</a> mal was rumgestöbert und daraus ist das entstanden.</p>
<pre><code class="language-cpp">unsigned long id = 0;

    bool bad_input = false;

    do
    {
        bad_input = false;

        cout &lt;&lt; &quot;id: &quot;;
        cin &gt;&gt; id;

        if (!cin.fail () &amp;&amp; id &lt;= num_template_)
            break;

        bad_input = true;
        cin.clear ();
        cin.ignore (numeric_limits&lt;unsigned long&gt;::max (), '\n');
    }
    while (bad_input);
</code></pre>
<p>Doch das geht nicht, fail schlägt nicht an, der Eingabepuffer wird nicht geleert und ich werde regelrecht erschlagen mit &quot;id: &quot;, was tausende von Male auf dem Bildschirm draufgehauen wird, ohne das ich ne Eingabe tätigen kann. <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="😞"
    /></p>
<p>Jemand eine Idee zu meinem Problem?</p>
<p>Schon mal vielen vielen Dank im voraus <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>Schönen Abend noch!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1275410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275410</guid><dc:creator><![CDATA[mojomi]]></dc:creator><pubDate>Sat, 28 Apr 2007 20:47:51 GMT</pubDate></item><item><title><![CDATA[Reply to cin soll nur gültige Eingaben zulassen. on Sat, 28 Apr 2007 23:27:07 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>mojomi schrieb:</p>
<blockquote>
<pre><code class="language-cpp">cin.ignore (numeric_limits&lt;unsigned long&gt;::max (), '\n');
</code></pre>
</blockquote>
<p>mach daraus mal ein</p>
<pre><code class="language-cpp">cin.sync(); // oder einfach cin.ignore() 
// sync kein ISO C++
</code></pre>
<p>Keine Ahnung, das nervt mich schon seit Ewigkeiten, das genau hier es nicht so funktioniert wie es soll...</p>
<p>Deswegen empfehle ich dir die sauberste und beste Lösung:</p>
<pre><code class="language-cpp">cin.clear ();
std::string temp; getline(cin, temp); // ließt den ganzen Müll im Puffer weg
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1275473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1275473</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 28 Apr 2007 23:27:07 GMT</pubDate></item></channel></rss>