<?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[Schleifenformat beim Einlesen]]></title><description><![CDATA[<p>Sehr abstrakter Titel, zugegeben. Ich wollte fragen, ob folgender Code in Ordnung ist bzw. wie man ihn verbessern könnte. Es geht mir darum, solange Werte einzulesen, wie die Eingabe korrekt ist und eine entsprechende Ausgabe zu haben. Ich möchte aber auf jeden Fall überflüssige Abfragen vermeiden und irgendwie fällt mir nicht ein, wie ich es ohne das Komma machen kann. Jemand eine Idee?</p>
<pre><code class="language-cpp">int main ()
{
    double i;

    while (cout &lt;&lt; &quot;&gt; &quot;, cin &gt;&gt; i) {
        cout &lt;&lt; &quot;is: &quot; &lt;&lt; i &lt;&lt; endl;
        cin.clear();
        cin.ignore(cin.rdbuf()-&gt;in_avail());
    }
}
</code></pre>
<p>Ein Dialog (Ein- und Ausgabe) könnte dann z.B. so aussehen:</p>
<pre><code>$ ./test
&gt; 1
is: 1
&gt; 1.2
is: 1.2
&gt; 12.3
is: 12.3
&gt; xyz

$
</code></pre>
<p>/EDIT: Um es nochmal konkret zu sagen: Mir gefällt die 'while'-Bedingung nicht, denn IMHO ist diese Komma-Anweisung nicht sehr sprechender Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/171316/schleifenformat-beim-einlesen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 10:34:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/171316.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 24 Jan 2007 13:07:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schleifenformat beim Einlesen on Wed, 24 Jan 2007 13:08:18 GMT]]></title><description><![CDATA[<p>Sehr abstrakter Titel, zugegeben. Ich wollte fragen, ob folgender Code in Ordnung ist bzw. wie man ihn verbessern könnte. Es geht mir darum, solange Werte einzulesen, wie die Eingabe korrekt ist und eine entsprechende Ausgabe zu haben. Ich möchte aber auf jeden Fall überflüssige Abfragen vermeiden und irgendwie fällt mir nicht ein, wie ich es ohne das Komma machen kann. Jemand eine Idee?</p>
<pre><code class="language-cpp">int main ()
{
    double i;

    while (cout &lt;&lt; &quot;&gt; &quot;, cin &gt;&gt; i) {
        cout &lt;&lt; &quot;is: &quot; &lt;&lt; i &lt;&lt; endl;
        cin.clear();
        cin.ignore(cin.rdbuf()-&gt;in_avail());
    }
}
</code></pre>
<p>Ein Dialog (Ein- und Ausgabe) könnte dann z.B. so aussehen:</p>
<pre><code>$ ./test
&gt; 1
is: 1
&gt; 1.2
is: 1.2
&gt; 12.3
is: 12.3
&gt; xyz

$
</code></pre>
<p>/EDIT: Um es nochmal konkret zu sagen: Mir gefällt die 'while'-Bedingung nicht, denn IMHO ist diese Komma-Anweisung nicht sehr sprechender Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1215956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1215956</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 24 Jan 2007 13:08:18 GMT</pubDate></item><item><title><![CDATA[Reply to Schleifenformat beim Einlesen on Wed, 24 Jan 2007 13:11:04 GMT]]></title><description><![CDATA[<p>Was spricht denn dagegen, den Komma-Operator zu verwenden? Das ist ein vollwertiger Operator in C++. Die einzige Änderung wäre, den durch ein &amp;&amp; zu ersetzen (das würde auch eventuelle Ausgabefehler abfangen).</p>
<p>PS: das &quot;cin.clear()&quot; brauchst du nur, wenn bei der Eingabe ein Fehler aufgetreten ist, also bestimmt nicht im Inneren der while()-Schleife.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1215961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1215961</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 24 Jan 2007 13:11:04 GMT</pubDate></item><item><title><![CDATA[Reply to Schleifenformat beim Einlesen on Wed, 24 Jan 2007 13:32:32 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Was spricht denn dagegen, den Komma-Operator zu verwenden? Das ist ein vollwertiger Operator in C++. Die einzige Änderung wäre, den durch ein &amp;&amp; zu ersetzen (das würde auch eventuelle Ausgabefehler abfangen).</p>
</blockquote>
<p>Ja, aber das ist doch nicht lesbar. Letztendlich hängt die Bedingung von der Ausgabe ja nicht ab (soll sie auch nicht, daher ja ',' statt 'and'). Daher hat sie in der Bedingung eigentlich auch nix zu suchen.</p>
<blockquote>
<p>PS: das &quot;cin.clear()&quot; brauchst du nur, wenn bei der Eingabe ein Fehler aufgetreten ist, also bestimmt nicht im Inneren der while()-Schleife.</p>
</blockquote>
<p>Ups, stimmt ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1215995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1215995</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 24 Jan 2007 13:32:32 GMT</pubDate></item><item><title><![CDATA[Reply to Schleifenformat beim Einlesen on Wed, 24 Jan 2007 23:28:37 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int main()
{
    double i;

    while (1) {
        cout &lt;&lt; &quot;&gt; &quot;;
        if (!(cin &gt;&gt; i))
            break;
        cout &lt;&lt; &quot;is: &quot; &lt;&lt; i &lt;&lt; endl;
    //  cin.clear();
        cin.ignore(cin.rdbuf()-&gt;in_avail());
    }
}
</code></pre>
<p>Effektiv ist das genau dasselbe. Das &quot;if&quot; ist in deiner Version auch da, bloss &quot;versteckt&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216515</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 24 Jan 2007 23:28:37 GMT</pubDate></item></channel></rss>