<?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 Blockade]]></title><description><![CDATA[<p>Wenn ich folgendes mache:</p>
<pre><code class="language-cpp">int wert1 = 0;

if(!(cin &gt;&gt; wert1))
{
  tastatur_leeren();
}
</code></pre>
<p>Wenn ich nun Leerzeile oder irgendein anderes Whitespace-Zeichen eingebe, blockiert cin solange, bis ich eine Zahl eingebe. D. h. Ich kann garnicht die Tastatur leeren und erneut den Nutzer zu einer richtigen Eingabe aufrufen. Wie kann ich dieses Problem lösen?</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/288214/cin-blockade</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 02:19:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/288214.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 12 Jun 2011 15:38:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to cin Blockade on Sun, 12 Jun 2011 15:38:12 GMT]]></title><description><![CDATA[<p>Wenn ich folgendes mache:</p>
<pre><code class="language-cpp">int wert1 = 0;

if(!(cin &gt;&gt; wert1))
{
  tastatur_leeren();
}
</code></pre>
<p>Wenn ich nun Leerzeile oder irgendein anderes Whitespace-Zeichen eingebe, blockiert cin solange, bis ich eine Zahl eingebe. D. h. Ich kann garnicht die Tastatur leeren und erneut den Nutzer zu einer richtigen Eingabe aufrufen. Wie kann ich dieses Problem lösen?</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077132</guid><dc:creator><![CDATA[Jeffson]]></dc:creator><pubDate>Sun, 12 Jun 2011 15:38:12 GMT</pubDate></item><item><title><![CDATA[Reply to cin Blockade on Sun, 12 Jun 2011 17:26:58 GMT]]></title><description><![CDATA[<p>Erst einmal: Die Streamoperatoren funktionieren nicht so wie du denkst. Eingabetasten, Leertasten und anderer Whitespace werden von den formatierten Einlesefunktionen (also dem Operator &gt;&gt;) verworfen. Die Eingabetaste hat höchstens für deine Konsole in der das Programm läuft eine besondere Bedeutung, weil ihr drücken signalisiert, dass die Eingabe überhaupt an das Programm übergeben werden soll. Und wenn du nur die Eingabetaste drückst, dann sieht dein Programm eben nur diese und die Aktion &quot;nächste Zahl einlesen&quot; läuft weiter.</p>
<p>Abhilfen:<br />
1. Wenn du vor hast, ein nicht-triviales Textinterface zu erstellen, dann guck dir am besten gleich eine Konsolenbibliothek an.</p>
<p>2. Wenn du ein bisschen frickeln möchtest und sicher bist, dass dein Programm nur mit Textkonsolen als Eingabe benutzt wird, dann kannst du auch unformatierte Einleseaktionen benutzen (z.B. getline, guck mal in einer Referenz) und diese dann selber auswerten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077212</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 12 Jun 2011 17:26:58 GMT</pubDate></item><item><title><![CDATA[Reply to cin Blockade on Sun, 12 Jun 2011 18:04:15 GMT]]></title><description><![CDATA[<p>Gerade beim Einlesen von Zahlen ist es nie ganz ohne, alle Möglichkeiten auf einen Fehler wie z.B. eine Endlosschleife<br />
(bzw. -&gt;unerwartete Ereignisse) auszuschließen.<br />
Oft wird geraten, gerade in diesem Punkt die Sicherheit zu optimieren, da das Programm in so ungefähr allen dieser Fälle abstürzt oder ein (unvermeidbares) Schließen des Programms (bzw. Fensters) provoziert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077227</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 12 Jun 2011 18:04:15 GMT</pubDate></item><item><title><![CDATA[Reply to cin Blockade on Mon, 13 Jun 2011 05:55:55 GMT]]></title><description><![CDATA[<p>Ich will eigentlich nur nach jedem Einlesen, sicher sein, dass der Tastaturpuffer leer ist. D. h. ich suche nach einer Lösung, den Tastaturpuffer 100% zu leeren.</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077330</guid><dc:creator><![CDATA[Jeffson]]></dc:creator><pubDate>Mon, 13 Jun 2011 05:55:55 GMT</pubDate></item><item><title><![CDATA[Reply to cin Blockade on Mon, 13 Jun 2011 06:00:35 GMT]]></title><description><![CDATA[<p>Da kannst du eventuell mal nach istream::ignore() schauen. Wenn du etwas komplexeres vorhast, kannst du die Eingaben auch per getline() holen und anschließend durch einen Stringstream zerlegen lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077331</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 13 Jun 2011 06:00:35 GMT</pubDate></item><item><title><![CDATA[Reply to cin Blockade on Mon, 13 Jun 2011 11:12:17 GMT]]></title><description><![CDATA[<p>Jeffson schrieb:</p>
<blockquote>
<p>Ich will eigentlich nur nach jedem Einlesen, sicher sein, dass der Tastaturpuffer leer ist. D. h. ich suche nach einer Lösung, den Tastaturpuffer 100% zu leeren.</p>
</blockquote>
<p>Das ist es ja gerade: cin steht nicht für die Tastatur sondern allgemein für die aktuelle Standardeingabe. Wenn du ganz speziell Programme schreiben möchtest, die man mit einer Tastatur steuern kann und dabei auch spezielle Eigenschaften einer Tastatur nutzen, dann musst du andere Mittel benutzen.</p>
<p>In der Regel dürfte sich dieser Aufwand jedoch nicht lohnen, falls du nur einen kosmetischen Fehler in einem Übungsprogramm beseitigen möchtest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077416</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 13 Jun 2011 11:12:17 GMT</pubDate></item></channel></rss>