<?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 Eingabepuffer]]></title><description><![CDATA[<p>Hallo! <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>Ich bin vor kurzem von Codeblocks auf Visual C++ 2010 umgestiegen.<br />
Jetzt wollte ich ein älteres Programm von mir nochmal neu in Visual C++ schreiben, d.h. &quot;schöner&quot; und kürzer.</p>
<p>Ein Programmteil, der so in Codeblocks funktioniert stellt in der MS Umgebung aber ein Problem dar.</p>
<p>t ist ein Integer.</p>
<pre><code class="language-cpp">// Schleife für die Zeitabfrage
    do
    {
    // Zeiteingabe
    cout &lt;&lt; &quot;Bitte die Zeitspanne in Sekunden eingeben: &quot;;
    cin &gt;&gt; t;

    if( t &lt; 0 )
        {
         cout &lt;&lt; &quot;\nFehler: Die Zeit kann nicht negativ sein!\a&quot; &lt;&lt; endl;
        }
    else if( cin.fail() )
        {
         cout &lt;&lt; &quot;\nFehler: Eingabe war keine Zahl!\a&quot; &lt;&lt; endl;
         cin.clear(); // Fehlerflags löschen
         cin.ignore( numeric_limits&lt;streamsize&gt;::max(), '\n' ); // die ungültigen Zeichen ignorieren
        }
    }
    while( t &lt; 0 || cin.fail() );
</code></pre>
<p>Funktioniert bei der Eingabe von negativen und positiven Zahlen wie geplant. Doch bei der Eingabe von Buchstaben wird eine Endlosschleife ausgelöst und es kann nichts mehr eingegeben werden.</p>
<p>In Codeblocks läuft es so ganz normal.</p>
<p>Was muss ich in Visual C++ anders machen bzw. mache ich falsch?</p>
<p>Danke im Vorraus für kompetente Antworten. <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/topic/271556/problem-mit-eingabepuffer</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 10:20:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271556.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 Jul 2010 14:03:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Eingabepuffer on Fri, 30 Jul 2010 14:03:15 GMT]]></title><description><![CDATA[<p>Hallo! <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>Ich bin vor kurzem von Codeblocks auf Visual C++ 2010 umgestiegen.<br />
Jetzt wollte ich ein älteres Programm von mir nochmal neu in Visual C++ schreiben, d.h. &quot;schöner&quot; und kürzer.</p>
<p>Ein Programmteil, der so in Codeblocks funktioniert stellt in der MS Umgebung aber ein Problem dar.</p>
<p>t ist ein Integer.</p>
<pre><code class="language-cpp">// Schleife für die Zeitabfrage
    do
    {
    // Zeiteingabe
    cout &lt;&lt; &quot;Bitte die Zeitspanne in Sekunden eingeben: &quot;;
    cin &gt;&gt; t;

    if( t &lt; 0 )
        {
         cout &lt;&lt; &quot;\nFehler: Die Zeit kann nicht negativ sein!\a&quot; &lt;&lt; endl;
        }
    else if( cin.fail() )
        {
         cout &lt;&lt; &quot;\nFehler: Eingabe war keine Zahl!\a&quot; &lt;&lt; endl;
         cin.clear(); // Fehlerflags löschen
         cin.ignore( numeric_limits&lt;streamsize&gt;::max(), '\n' ); // die ungültigen Zeichen ignorieren
        }
    }
    while( t &lt; 0 || cin.fail() );
</code></pre>
<p>Funktioniert bei der Eingabe von negativen und positiven Zahlen wie geplant. Doch bei der Eingabe von Buchstaben wird eine Endlosschleife ausgelöst und es kann nichts mehr eingegeben werden.</p>
<p>In Codeblocks läuft es so ganz normal.</p>
<p>Was muss ich in Visual C++ anders machen bzw. mache ich falsch?</p>
<p>Danke im Vorraus für kompetente Antworten. <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/1934065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1934065</guid><dc:creator><![CDATA[Chroma]]></dc:creator><pubDate>Fri, 30 Jul 2010 14:03:15 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Eingabepuffer on Fri, 30 Jul 2010 14:27:57 GMT]]></title><description><![CDATA[<p>flush den input stream mittels</p>
<p>#include &lt;windows.h&gt; // fflush(stream)</p>
<p>fflush(stdin);</p>
<p>ist unter windows definiert!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1934072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1934072</guid><dc:creator><![CDATA[acaa]]></dc:creator><pubDate>Fri, 30 Jul 2010 14:27:57 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Eingabepuffer on Fri, 30 Jul 2010 14:43:13 GMT]]></title><description><![CDATA[<p>Danke für die Antwort, bewirkt jedoch leider nichts. Nach wie vor das selbe Problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1934079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1934079</guid><dc:creator><![CDATA[Chroma]]></dc:creator><pubDate>Fri, 30 Jul 2010 14:43:13 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Eingabepuffer on Fri, 30 Jul 2010 14:45:17 GMT]]></title><description><![CDATA[<p>Ist ja auch Käse, da stdin nichts mit der Pufferung von std::istream zu tun hat. Unter Windows funktioniert:</p>
<pre><code class="language-cpp">cin.sync();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1934081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1934081</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Fri, 30 Jul 2010 14:45:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Eingabepuffer on Fri, 30 Jul 2010 14:54:49 GMT]]></title><description><![CDATA[<p>Leute, gebt ihm doch nicht so komische Windwos Tipps, wenn er doch schon so schön plattformunabhängigen Code hat. Der Fehler liegt ganz woanders: Mach das <code>else</code> weg! Das hat von der Programmlogik her dort nichts zu suchen und löst die Endlosschleife aus, weil die if-Bedingung nie abgefragt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1934084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1934084</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 30 Jul 2010 14:54:49 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Eingabepuffer on Fri, 30 Jul 2010 15:00:48 GMT]]></title><description><![CDATA[<p>Vielen Dank Sepp!<br />
Das else muss sich da irgendwie eingeschlichen haben.<br />
Mit einem If klappt es jetzt wudnerbar so wie es sein soll. <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/1934089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1934089</guid><dc:creator><![CDATA[Chroma]]></dc:creator><pubDate>Fri, 30 Jul 2010 15:00:48 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Eingabepuffer on Fri, 30 Jul 2010 15:16:41 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Leute, gebt ihm doch nicht so komische Windwos Tipps, wenn er doch schon so schön plattformunabhängigen Code hat. Der Fehler liegt ganz woanders: Mach das <code>else</code> weg! Das hat von der Programmlogik her dort nichts zu suchen und löst die Endlosschleife aus, weil die if-Bedingung nie abgefragt wird.</p>
</blockquote>
<p>Das bringt ihm auch nichts. So ist's besser:</p>
<pre><code class="language-cpp">do
	{
	// Zeiteingabe
	cout &lt;&lt; &quot;Bitte die Zeitspanne in Sekunden eingeben: &quot;;
	cin &gt;&gt; t;

	 if( cin.fail() )
		{
		 cout &lt;&lt; &quot;\nFehler: Eingabe war keine Zahl!\a&quot; &lt;&lt; endl;
		 cin.clear(); // Fehlerflags löschen
		 cin.ignore( 32000, '\n' ); // die ungültigen Zeichen ignorieren
		 t = -1;
		}
	else if( t &lt; 0 )
		{
		 cout &lt;&lt; &quot;\nFehler: Die Zeit kann nicht negativ sein!\a&quot; &lt;&lt; endl;
		}
	}
	while( t &lt; 0  );
</code></pre>
<p>Die Prüfung auf cin.fail in der while-Bedingung bringt nichts, da sie ja mit cin.clear zurückgesetzt wurde.<br />
mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1934102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1934102</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Fri, 30 Jul 2010 15:16:41 GMT</pubDate></item></channel></rss>