<?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[Eingabe Kontrollieren]]></title><description><![CDATA[<p>Hallo<br />
Das Thema ist eigentlich geklärt.<br />
Jedoch in meinem Fall komme ich nicht klar</p>
<pre><code>double zahl;

std::cin&gt;&gt;zahl;
while(!std::cin){
std::cin.clear();
std::cin.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(),'\n');
std::cin&gt;&gt;zahl;
}
</code></pre>
<p>Wenn ich 34.2 eingebe, passt<br />
wenn ich xzy24 eingebe dann fail() return true<br />
Wenn ich 24xyz eingebe dann wird 24 gespeichert (while bedingung nicht erfüllt)<br />
wie kann man im Fall &quot;24.xyz&quot; oder &quot;24xyz&quot; kontrollieren?<br />
will schließlich das als falsche Eingabe definieren und die Eingabe wiederholen.<br />
Zahl in string lesen und kontrollieren und schließlich in double umwandeln ist leider nicht erlaubt.</p>
<p>Vielen Dank <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/340459/eingabe-kontrollieren</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 05:38:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/340459.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Nov 2016 16:44:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eingabe Kontrollieren on Wed, 09 Nov 2016 16:44:55 GMT]]></title><description><![CDATA[<p>Hallo<br />
Das Thema ist eigentlich geklärt.<br />
Jedoch in meinem Fall komme ich nicht klar</p>
<pre><code>double zahl;

std::cin&gt;&gt;zahl;
while(!std::cin){
std::cin.clear();
std::cin.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(),'\n');
std::cin&gt;&gt;zahl;
}
</code></pre>
<p>Wenn ich 34.2 eingebe, passt<br />
wenn ich xzy24 eingebe dann fail() return true<br />
Wenn ich 24xyz eingebe dann wird 24 gespeichert (while bedingung nicht erfüllt)<br />
wie kann man im Fall &quot;24.xyz&quot; oder &quot;24xyz&quot; kontrollieren?<br />
will schließlich das als falsche Eingabe definieren und die Eingabe wiederholen.<br />
Zahl in string lesen und kontrollieren und schließlich in double umwandeln ist leider nicht erlaubt.</p>
<p>Vielen Dank <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/2514755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514755</guid><dc:creator><![CDATA[yeurandom92]]></dc:creator><pubDate>Wed, 09 Nov 2016 16:44:55 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe Kontrollieren on Wed, 09 Nov 2016 17:46:16 GMT]]></title><description><![CDATA[<p>Wenn das nächste Zeichen white space ist, war es ok.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514768</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 09 Nov 2016 17:46:16 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe Kontrollieren on Wed, 09 Nov 2016 18:07:26 GMT]]></title><description><![CDATA[<p>Das ist so leider nicht möglich.</p>
<p>Benutze getline und string(stream).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514770</guid><dc:creator><![CDATA[Ein Gast]]></dc:creator><pubDate>Wed, 09 Nov 2016 18:07:26 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe Kontrollieren on Wed, 09 Nov 2016 18:16:50 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Wenn das nächste Zeichen white space ist, war es ok.</p>
</blockquote>
<p>Warum sollte denn &quot;24 XYZ&quot; eine gültige Zahl sein?!</p>
<p>Man müsste schon schauen, dass entweder der Stream am Ende ist oder ein Zeilenvorschub folgt. Ich finde das immer sehr schwierig richtig zu machen.</p>
<p>Vielleicht so:</p>
<pre><code>#include &lt;iostream&gt;

using std::cin;

int main() {
  int i;
  cin &gt;&gt; i;
  if (cin &amp;&amp; (cin.eof() || cin.peek() == 10)) {
    std::cout &lt;&lt; &quot;Gut.\n&quot;;
  } else {
    std::cout &lt;&lt; &quot;Nicht gut.\n&quot;;
  }
}
</code></pre>
<p>Test:</p>
<pre><code>~/test$ echo 4 | ./a.out                            
Gut.
~/test$ echo -n 4 | ./a.out                            
Gut.
~/test$ echo &quot;4 &quot; | ./a.out
Nicht gut.
~/test$ echo -n X | ./a.out
Nicht gut.
~/test$ echo X | ./a.out 
Nicht gut.
</code></pre>
<p>Mir ist das meist zu kompliziert und ich nehme einfach getline <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/2514771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514771</guid><dc:creator><![CDATA[stream-hasser]]></dc:creator><pubDate>Wed, 09 Nov 2016 18:16:50 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe Kontrollieren on Wed, 09 Nov 2016 18:19:39 GMT]]></title><description><![CDATA[<p>stream-hasser: mach mal so:</p>
<pre><code>echo -n 'x'|./out
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2514772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514772</guid><dc:creator><![CDATA[Ein Gast]]></dc:creator><pubDate>Wed, 09 Nov 2016 18:19:39 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe Kontrollieren on Wed, 09 Nov 2016 18:25:18 GMT]]></title><description><![CDATA[<p>stream-hasser schrieb:</p>
<blockquote>
<p>manni66 schrieb:</p>
<blockquote>
<p>Wenn das nächste Zeichen white space ist, war es ok.</p>
</blockquote>
<p>Warum sollte denn &quot;24 XYZ&quot; eine gültige Zahl sein?!</p>
<p>Man müsste schon schauen, dass entweder der Stream am Ende ist oder ein Zeilenvorschub folgt. Ich finde das immer sehr schwierig richtig zu machen.</p>
<p>Vielleicht so:</p>
<pre><code>#include &lt;iostream&gt;

using std::cin;

int main() {
  int i;
  cin &gt;&gt; i;
  if (cin &amp;&amp; (cin.eof() || cin.peek() == 10)) {
    std::cout &lt;&lt; &quot;Gut.\n&quot;;
  } else {
    std::cout &lt;&lt; &quot;Nicht gut.\n&quot;;
  }
}
</code></pre>
<p>Test:</p>
<pre><code>~/test$ echo 4 | ./a.out                            
Gut.
~/test$ echo -n 4 | ./a.out                            
Gut.
~/test$ echo &quot;4 &quot; | ./a.out
Nicht gut.
~/test$ echo -n X | ./a.out
Nicht gut.
~/test$ echo X | ./a.out 
Nicht gut.
</code></pre>
<p>Mir ist das meist zu kompliziert und ich nehme einfach getline <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>
</blockquote>
<p>ja getline ist nicht schlecht<br />
aber getline muss man wieder mit string arbeiten, leider will ich das direkt in ein double speichern und nicht über Umwege führen.<br />
kann man eigentlich eingabestrom prüfen</p>
<p>sowas wie</p>
<p>prüfe ziffer für ziffer in eingabestrom<br />
wenn cin.peek()!= 0 bis 9<br />
dann mit cin.clear() alles im eingabestrom löschen und wieder neu eingeben ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514774</guid><dc:creator><![CDATA[yeurandom92]]></dc:creator><pubDate>Wed, 09 Nov 2016 18:25:18 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe Kontrollieren on Wed, 09 Nov 2016 18:28:10 GMT]]></title><description><![CDATA[<p>Ein Gast schrieb:</p>
<blockquote>
<p>stream-hasser: mach mal so:</p>
<pre><code>echo -n 'x'|./out
</code></pre>
</blockquote>
<p>Da kommt &quot;nicht gut&quot; raus, so wie man sich es denkt, so wie es sein soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514775</guid><dc:creator><![CDATA[stream-hasser]]></dc:creator><pubDate>Wed, 09 Nov 2016 18:28:10 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe Kontrollieren on Wed, 09 Nov 2016 23:11:07 GMT]]></title><description><![CDATA[<p>Zeichen für Zeichen auf isdigit() || '.' checken, sonst verwerfen.<br />
Zeilen mit mehrfachen '.' ebenso verwerfen.<br />
Da gibt es wahrscheinlich elegantere Methoden, aber ich als alte C-Schleuder würde es so machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514800</guid><dc:creator><![CDATA[eop-hat-wiedermal]]></dc:creator><pubDate>Wed, 09 Nov 2016 23:11:07 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe Kontrollieren on Thu, 10 Nov 2016 04:14:19 GMT]]></title><description><![CDATA[<p><strong>Ein</strong> E (oder e) darf aber auch in einem double-Literal vorkommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514807</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Thu, 10 Nov 2016 04:14:19 GMT</pubDate></item><item><title><![CDATA[Reply to Eingabe Kontrollieren on Thu, 10 Nov 2016 05:04:56 GMT]]></title><description><![CDATA[<p>DirkB schrieb:</p>
<blockquote>
<p><strong>Ein</strong> E (oder e) darf aber auch in einem double-Literal vorkommen.</p>
</blockquote>
<p>Sollte auch kein Ding sein, darauf zu testen. Müsste mir nur die exakte, erlaubte Notation für diese Syntax ansehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2514808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2514808</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Thu, 10 Nov 2016 05:04:56 GMT</pubDate></item></channel></rss>