<?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[Fehler bei switch Anweisung]]></title><description><![CDATA[<p>Hallo und guten Morgen liebe Gemeinde.</p>
<p>Ich wollte folgenden Code programmieren:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main()
{
	cout &lt;&lt; &quot;\tAlles rund um Strings\n&quot;;
	cout &lt;&lt; &quot;\n&quot;;
	int number_1;

	do
	{
		cout &lt;&lt; &quot;Was wollen Sie tun?\n&quot;;
		cout &lt;&lt; &quot;(1) Stringlänge berechnen\n&quot;;
		cout &lt;&lt; &quot;(2) Strings addieren\n&quot;;
		cout &lt;&lt; &quot;(3) Pointer auf String\n&quot;;
		cout &lt;&lt; &quot;(4) Referenz auf String\n&quot;;
		cout &lt;&lt; &quot;(5) Groesse eines Strings ausgeben\n&quot;;
		cout &lt;&lt; &quot;(0) Abbruch\n&quot;;
		cin  &gt;&gt; number_1;

		switch(number_1)
		{
		case 1:
			string Text_1;

			cout &lt;&lt; &quot;Geben Sie einen Text ein!\n&quot;;
			getline(cin, Text_1);
			cout &lt;&lt; &quot;\n&quot;;
			cout &lt;&lt; &quot;Diesen Text haben Sie eingegeben:\n&quot;;
			cout &lt;&lt; Text_1;
			cout &lt;&lt; &quot;Ihr Text hat &quot; &lt;&lt; Text_1.size() &lt;&lt; &quot; Buchstaben\n&quot;;

			break;

		case 2:
			string str_1;
			string str_2;
			string str_3;

			std::cin.ignore(1);

			cout &lt;&lt; &quot;Geben Sie das erste Wort ein:&quot;;
			getline(cin, str_1);
			cout &lt;&lt; &quot;Geben Sie das zweite Wort ein:&quot;;
			getline(cin, str_2);

			str_3 = str_1 + str_2;

			cout &lt;&lt; &quot;Zusammengefuegt heisst das Wort &quot; &lt;&lt; str_3 &lt;&lt;&quot;\n&quot;;

			break;

		case 3:
			string Text_2;
			string *pText_2=&amp;Text_2;

			std::cin.ignore(2);

			cout &lt;&lt; &quot;Geben Sie einen Text ein!\n&quot;;
			getline (cin, Text_2);

			cout &lt;&lt; &quot;\n&quot;;
			cout &lt;&lt; &quot;Diesen Text haben Sie eingegeben: \n&quot;;
			cout &lt;&lt; Text_2;
			cout &lt;&lt; &quot;Speicheradresse Ihres Textes: &quot; &lt;&lt; &amp;Text_2 &lt;&lt; &quot;\n&quot;;

			break;

		case 4:

			std::cin.ignore(3);
			 string a(&quot;Hallo&quot;);
			 string &amp; ref = a;

			 ref += &quot; Welt&quot;;

			 cout &lt;&lt; (a==ref) &lt;&lt; endl;
			 cout &lt;&lt; a &lt;&lt; std::endl &lt;&lt; ref &lt;&lt; endl;

			 break;

		case 5:

			std::cin.ignore(4);

			string Text;
			cout &lt;&lt; &quot;Geben Sie einen Text ein!\n&quot;;
			cin  &gt;&gt; Text;

			cout &lt;&lt; sizeof(Text) &lt;&lt; &quot;\n&quot;;
			cout &lt;&lt; &quot;Groesse:\t &quot; &lt;&lt; Text.size() &lt;&lt; &quot;\n&quot;;
			cout &lt;&lt; &quot;Laenge:\t&quot; &lt;&lt; Text.length ()&lt;&lt; &quot;\n&quot;;
			cout &lt;&lt; &quot;Kapazitaet:\t&quot; &lt;&lt; Text.capacity() &lt;&lt; &quot;\n&quot;;
			cout &lt;&lt; &quot;Max. Laenge:\t&quot; &lt;&lt; Text.max_size() &lt;&lt; &quot;\n&quot;;

			break;

		case 0:
			cout &lt;&lt; &quot;Exit durch Abbruch!\n&quot;;
			break;
		}
	}while(number_1!=0);

	return 0;
}
</code></pre>
<p>Nun bekomme ich jedoch bei der <code>switch</code> Anweisung folgende Fehlermeldung:</p>
<pre><code class="language-cpp">Error: Die Übertragung eines Steuerelements umgeht die Initialisierung von:
</code></pre>
<p>Ich weiß nicht, auf was sich die Fehlermeldung bezieht, da ich denke, dass ich richtig programmiert habe...</p>
<p>Wo liegt mein Denkfehler??</p>
<p>Danke für die Antworten im Voraus.</p>
<p>Gruß</p>
<p>Max</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/312527/fehler-bei-switch-anweisung</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 18:46:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312527.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Jan 2013 09:08:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 09:08:02 GMT]]></title><description><![CDATA[<p>Hallo und guten Morgen liebe Gemeinde.</p>
<p>Ich wollte folgenden Code programmieren:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main()
{
	cout &lt;&lt; &quot;\tAlles rund um Strings\n&quot;;
	cout &lt;&lt; &quot;\n&quot;;
	int number_1;

	do
	{
		cout &lt;&lt; &quot;Was wollen Sie tun?\n&quot;;
		cout &lt;&lt; &quot;(1) Stringlänge berechnen\n&quot;;
		cout &lt;&lt; &quot;(2) Strings addieren\n&quot;;
		cout &lt;&lt; &quot;(3) Pointer auf String\n&quot;;
		cout &lt;&lt; &quot;(4) Referenz auf String\n&quot;;
		cout &lt;&lt; &quot;(5) Groesse eines Strings ausgeben\n&quot;;
		cout &lt;&lt; &quot;(0) Abbruch\n&quot;;
		cin  &gt;&gt; number_1;

		switch(number_1)
		{
		case 1:
			string Text_1;

			cout &lt;&lt; &quot;Geben Sie einen Text ein!\n&quot;;
			getline(cin, Text_1);
			cout &lt;&lt; &quot;\n&quot;;
			cout &lt;&lt; &quot;Diesen Text haben Sie eingegeben:\n&quot;;
			cout &lt;&lt; Text_1;
			cout &lt;&lt; &quot;Ihr Text hat &quot; &lt;&lt; Text_1.size() &lt;&lt; &quot; Buchstaben\n&quot;;

			break;

		case 2:
			string str_1;
			string str_2;
			string str_3;

			std::cin.ignore(1);

			cout &lt;&lt; &quot;Geben Sie das erste Wort ein:&quot;;
			getline(cin, str_1);
			cout &lt;&lt; &quot;Geben Sie das zweite Wort ein:&quot;;
			getline(cin, str_2);

			str_3 = str_1 + str_2;

			cout &lt;&lt; &quot;Zusammengefuegt heisst das Wort &quot; &lt;&lt; str_3 &lt;&lt;&quot;\n&quot;;

			break;

		case 3:
			string Text_2;
			string *pText_2=&amp;Text_2;

			std::cin.ignore(2);

			cout &lt;&lt; &quot;Geben Sie einen Text ein!\n&quot;;
			getline (cin, Text_2);

			cout &lt;&lt; &quot;\n&quot;;
			cout &lt;&lt; &quot;Diesen Text haben Sie eingegeben: \n&quot;;
			cout &lt;&lt; Text_2;
			cout &lt;&lt; &quot;Speicheradresse Ihres Textes: &quot; &lt;&lt; &amp;Text_2 &lt;&lt; &quot;\n&quot;;

			break;

		case 4:

			std::cin.ignore(3);
			 string a(&quot;Hallo&quot;);
			 string &amp; ref = a;

			 ref += &quot; Welt&quot;;

			 cout &lt;&lt; (a==ref) &lt;&lt; endl;
			 cout &lt;&lt; a &lt;&lt; std::endl &lt;&lt; ref &lt;&lt; endl;

			 break;

		case 5:

			std::cin.ignore(4);

			string Text;
			cout &lt;&lt; &quot;Geben Sie einen Text ein!\n&quot;;
			cin  &gt;&gt; Text;

			cout &lt;&lt; sizeof(Text) &lt;&lt; &quot;\n&quot;;
			cout &lt;&lt; &quot;Groesse:\t &quot; &lt;&lt; Text.size() &lt;&lt; &quot;\n&quot;;
			cout &lt;&lt; &quot;Laenge:\t&quot; &lt;&lt; Text.length ()&lt;&lt; &quot;\n&quot;;
			cout &lt;&lt; &quot;Kapazitaet:\t&quot; &lt;&lt; Text.capacity() &lt;&lt; &quot;\n&quot;;
			cout &lt;&lt; &quot;Max. Laenge:\t&quot; &lt;&lt; Text.max_size() &lt;&lt; &quot;\n&quot;;

			break;

		case 0:
			cout &lt;&lt; &quot;Exit durch Abbruch!\n&quot;;
			break;
		}
	}while(number_1!=0);

	return 0;
}
</code></pre>
<p>Nun bekomme ich jedoch bei der <code>switch</code> Anweisung folgende Fehlermeldung:</p>
<pre><code class="language-cpp">Error: Die Übertragung eines Steuerelements umgeht die Initialisierung von:
</code></pre>
<p>Ich weiß nicht, auf was sich die Fehlermeldung bezieht, da ich denke, dass ich richtig programmiert habe...</p>
<p>Wo liegt mein Denkfehler??</p>
<p>Danke für die Antworten im Voraus.</p>
<p>Gruß</p>
<p>Max</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287138</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287138</guid><dc:creator><![CDATA[silent_max]]></dc:creator><pubDate>Mon, 07 Jan 2013 09:08:02 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 09:13:51 GMT]]></title><description><![CDATA[<p>Solch ein problem hatten wir vor ein paar Tagen schonmal.</p>
<p>Eine Variable hat einen gewissen Gültigkeitsbereich, also ein Bereich wo sie existiert. Dieser geht von der Definition bis zum nächsten zugehörigen schließenden }.</p>
<pre><code>{
int i; // i wird hier erzeugt
// ...
// ...
// ...
// ...
// ...
} // i wird hier zerstört
</code></pre>
<p>Analog auch:</p>
<pre><code>{
// ... hier existiert i noch nicht!
// ...
// ...
int i; // i wird hier erzeugt
// ...
// ...
// ...
// ...
// ...
} // i wird hier zerstört
</code></pre>
<p>Auf der anderen Seite muss eine Variable in solch einer Klammerumgebung stehen. In deinen Cases vom Switch stehen sie aber ohne alles da.</p>
<p>Die Lösung ist, dass du das hier machst:</p>
<pre><code>switch (xXx)
{
case 1:
    {
        // ...
    }
}
</code></pre>
<p>Du setzt also in die cases noch mal solche Klammern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287140</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 07 Jan 2013 09:13:51 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 09:14:00 GMT]]></title><description><![CDATA[<p>Das ist <strong>exakt</strong> der letzte Fehler wie beim letzten mal. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287141</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Mon, 07 Jan 2013 09:14:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 09:14:59 GMT]]></title><description><![CDATA[<p>War silent_max das auch ?<br />
Hatte nur im Kopf, dass das Problem hier aufkam, aber wusste nicht mehr von wem <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287142</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 07 Jan 2013 09:14:59 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 09:29:09 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>War silent_max das auch ?<br />
Hatte nur im Kopf, dass das Problem hier aufkam, aber wusste nicht mehr von wem <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Ja, das war ich und als cooky451 es gesagt hat, habe ich mich wieder daran errinnert...</p>
<p>Sorry nochmal...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287150</guid><dc:creator><![CDATA[silent_max]]></dc:creator><pubDate>Mon, 07 Jan 2013 09:29:09 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 09:32:08 GMT]]></title><description><![CDATA[<p>ist ja alles np <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287152</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 07 Jan 2013 09:32:08 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 10:50:55 GMT]]></title><description><![CDATA[<p>silent_max schrieb:</p>
<blockquote>
<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>War silent_max das auch ?<br />
Hatte nur im Kopf, dass das Problem hier aufkam, aber wusste nicht mehr von wem <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Ja, das war ich und als cooky451 es gesagt hat, habe ich mich wieder daran errinnert...</p>
<p>Sorry nochmal...</p>
</blockquote>
<p>Wow, Du hast genau eine Woche gebraucht, das Erlernte zu vergessen.</p>
<p>Nicht schlecht.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287172</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Mon, 07 Jan 2013 10:50:55 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 11:05:53 GMT]]></title><description><![CDATA[<p>Es gibt Leute, die brauche weit weniger Zeit...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287178</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 07 Jan 2013 11:05:53 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 11:12:39 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Es gibt Leute, die brauche weit weniger Zeit...</p>
</blockquote>
<p>Vielleicht hat er auch erst jetzt wieder einen switch benutzt. Hätte er direkt im Anschluss an den letzten Thread dieses Programm geschrieben, wäre das Ergebnis vermutlich das gleiche gewesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287179</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 07 Jan 2013 11:12:39 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 11:10:29 GMT]]></title><description><![CDATA[<p>mgaeckler schrieb:</p>
<blockquote>
<p>Wow, Du hast genau eine Woche gebraucht, das <em>Erlernte</em> zu vergessen.</p>
</blockquote>
<p>Sicher?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287181</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Mon, 07 Jan 2013 11:10:29 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 11:11:52 GMT]]></title><description><![CDATA[<p>Hey Mädels, lasst doch mal die Nachfahren in Frieden ruhen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287182</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 07 Jan 2013 11:11:52 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 12:09:27 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>mgaeckler schrieb:</p>
<blockquote>
<p>Wow, Du hast genau eine Woche gebraucht, das <em>Erlernte</em> zu vergessen.</p>
</blockquote>
<p>Sicher?</p>
</blockquote>
<p>Mea Culpa. Es waren weniger als 5 Tage 13 Stunden und 50 Minuten. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287193</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Mon, 07 Jan 2013 12:09:27 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 12:30:47 GMT]]></title><description><![CDATA[<p>Ich finde es nicht so bemerkenswert, dass das wieder vergessen wurde, sondern vielmehr, dass die Fehlermeldung nicht für ein 'Ach ja ... ' - Erlebnis gesorgt hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287200</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 07 Jan 2013 12:30:47 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 12:36:36 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>Ich finde es nicht so bemerkenswert, dass das wieder vergessen wurde, sondern vielmehr, dass die Fehlermeldung nicht für ein 'Ach ja ... ' - Erlebnis gesorgt hat.</p>
</blockquote>
<p>Daher hat Bashar das Wort &quot;Erlernte&quot; markiert. Er bezog sich nicht auf den Zeitraum.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287205</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 07 Jan 2013 12:36:36 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 16:33:08 GMT]]></title><description><![CDATA[<p>Die Fehlermeldung kam mir schon bekannt vor, doch ich wusste nicht mehr in welchem Zusammenhang.</p>
<p>Das komische am Quellcode ist das, dass es zwar nun ausgeführt wird, aber dass Menüpunkt 1 übersprungen wird...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287294</guid><dc:creator><![CDATA[silent_max]]></dc:creator><pubDate>Mon, 07 Jan 2013 16:33:08 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 16:42:50 GMT]]></title><description><![CDATA[<p>Das ist in der Tat komisch. Versuch mal das folgende (erklären macht eh keinen Sinn):</p>
<pre><code class="language-cpp">cin  &gt;&gt; number_1; // hinter dieser Zeile in deinem Code das hier einfügen:
cin.ignore( std::numeric_limits&lt; std::streamsize &gt;::max(), '\n' );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2287298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287298</guid><dc:creator><![CDATA[komisch]]></dc:creator><pubDate>Mon, 07 Jan 2013 16:42:50 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 16:48:04 GMT]]></title><description><![CDATA[<p>Ja,jetzt klappt es mit dem Menüpunkt 1.</p>
<p>Danke für den Tipp.</p>
<p>P.S.: Warum macht die Erklärung keinen Sinn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287300</guid><dc:creator><![CDATA[silent_max]]></dc:creator><pubDate>Mon, 07 Jan 2013 16:48:04 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 17:02:40 GMT]]></title><description><![CDATA[<p>silent_max schrieb:</p>
<blockquote>
<p>P.S.: Warum macht die Erklärung keinen Sinn?</p>
</blockquote>
<p>Es gab vor 6h so eine Diskussion darüber, aber offensichtlich hast du sie vergessen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287303</guid><dc:creator><![CDATA[komisch]]></dc:creator><pubDate>Mon, 07 Jan 2013 17:02:40 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Mon, 07 Jan 2013 17:08:20 GMT]]></title><description><![CDATA[<p>komisch schrieb:</p>
<blockquote>
<p>Es gab vor 6h so eine Diskussion darüber, aber offensichtlich hast du sie vergessen.</p>
</blockquote>
<p>Sorry, aber ich war zwischen ca. 10:30 Uhr und 17:30 Uhr nicht am PC. Das sind <strong>7</strong> Stunden, in denen ich nichts mitbekommen habe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287304</guid><dc:creator><![CDATA[silent_max]]></dc:creator><pubDate>Mon, 07 Jan 2013 17:08:20 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Tue, 08 Jan 2013 07:44:32 GMT]]></title><description><![CDATA[<p>silent_max schrieb:</p>
<blockquote>
<p>Sorry, aber ich war zwischen ca. 10:30 Uhr und 17:30 Uhr nicht am PC. Das sind <strong>7</strong> Stunden, in denen ich nichts mitbekommen habe...</p>
</blockquote>
<p>Das erklärt so einiges...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287459</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 08 Jan 2013 07:44:32 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei switch Anweisung on Tue, 08 Jan 2013 08:12:40 GMT]]></title><description><![CDATA[<p>komisch schrieb:</p>
<blockquote>
<pre><code class="language-cpp">cin  &gt;&gt; number_1; // hinter dieser Zeile in deinem Code das hier einfügen:
cin.ignore( std::numeric_limits&lt; std::streamsize &gt;::max(), '\n' );
</code></pre>
</blockquote>
<p>ich versuchs einfach mal zu erklären:<br />
mit Zeile 1 liest du wie gewohnt etwas von der Standardausgabe ein.<br />
Was passiert aber im Fehlerfall (Als Programmierer lässt du ein int eingeben, der User gibt aber z.B. &quot;123abc456&quot; ein.)<br />
Der Inputstream hat intern diese Zeichen alle (ob als String oder als sonstwas ist implementierungsabhängig) vorhanden. Er guckt dann zeichenweise, ob das Zeichen zur Anforderung (also zu einem int) passt. In dem konkreten Fall liest er die 1, 2 und die 3 und schiebt sie auch direkt aus dem Puffer (also dem Speicher-String). Dann merkt er &quot;Oh, das a passt aber nicht&quot;.</p>
<p>Intern hat der Stream dann noch ein Flag (z.B. eine bool'sche Variable) für den Fehlerfall, die er sogleich auf Fehler setzt und er bricht mit dem Lesen ab.</p>
<p>Jetzt ist dein Standard-Input-Stream erstmal fertig, bzw ausser Gefecht. Diesen Status muss man aber abfragen, denn von sich aus meldet der Stream nichts.</p>
<p>Szenario 1: Du nutzt cin(also deinen Stream) einfach weiter wie gewohnt und liest jetzt noch einen int ein (bzw willst). Intern sieht der Stream aber jetzt &quot;Oh, da steht noch was im Puffer, ich nehm das zuerst. Aber huch, da ist ja auch ein Fehler. Da hab ich keine Lust mehr und streike&quot;. Das Ergebnis für deine zweite Eingabeauforderung: Der User wird gar nicht erst gefragt(der Stream gibt ja schon vorhergeschriebenen Inhalt vor), aber hat die int Variable beschrieben.<br />
Auf gut deutsch: inputstreams in einer Schleife fragen den User bis zur Falscheingabe und laufen danach naja ungefragt im Endlosmodus weiter.</p>
<p>Szenario 2: Du fragst nach jeder Eingabe den Stream, ob er noch ganz beisammen ist, etwa so:</p>
<pre><code>int i;
if ( !(cin &gt;&gt; i) ) { }
// oder so
cin &gt;&gt; i;
if ( !cin ) { }
// oder so
cin &gt;&gt; i;
if ( cin.good() ) { }
// oder so
cin &gt;&gt; i;
if ( cin.fail() ) { }
</code></pre>
<p>Und im Fehlerfall korrigierst du den/die Fehler.<br />
Und das macht man mit Ignore. Dieses löscht nämlich beliebig viele Zeichen (erster Parameter) aus dem Stream. Die andere Möglichkeit ist, es löscht so viele Zeichen im Streambuffer bis ein gewisses Zeichen kommt (der zweite Parameter). Der Fall von den beiden geschilderten, der zuerst eintritt, entscheidet.<br />
In dem von komisch genannten Beispiel ist das erste Argument die grösste Zahl die eine Streamgrösse annehmen kann. (<strong>std::numeric_limits&lt; std::streamsize &gt;::max()</strong>)</p>
<p>Danach ist der Streambuffer leer. Das Failbit ist aber noch gesetzt, dieses entfernt man mit clear().</p>
<p>Ist eigentlich ganz einfach und logisch. Aber frag nicht warum der Standard das so will und nicht die Streams automatisch korrigiert, dafür gibt es viele Gründe (sowohl dafür als auch dagegen).</p>
<pre><code>int i;
cin &gt;&gt; i;

if ( !cin )
{
    cin.ignore(std::numeric_limits&lt; std::streamsize &gt;::max(), '\n');
    cin.clear();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2287461</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287461</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 08 Jan 2013 08:12:40 GMT</pubDate></item></channel></rss>