<?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[Switch-Case]]></title><description><![CDATA[<p>Hallo,<br />
ich bin neu in der c++ Welt.<br />
Habe daher auch eine einfache Frage.<br />
Kann man mit einer Switch-Case-Anweisung auch Strings auswerten bzw. Prüfen um bestimmte Fälle zu unterscheiden? Bei Intergerwerten kenne ich das ja, möchte aber nun Strings prüfen. um Fälle zu unterscheiden.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/209464/switch-case</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 21:53:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/209464.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 31 Mar 2008 07:36:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Switch-Case on Mon, 31 Mar 2008 07:36:17 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich bin neu in der c++ Welt.<br />
Habe daher auch eine einfache Frage.<br />
Kann man mit einer Switch-Case-Anweisung auch Strings auswerten bzw. Prüfen um bestimmte Fälle zu unterscheiden? Bei Intergerwerten kenne ich das ja, möchte aber nun Strings prüfen. um Fälle zu unterscheiden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1483566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1483566</guid><dc:creator><![CDATA[NewInC]]></dc:creator><pubDate>Mon, 31 Mar 2008 07:36:17 GMT</pubDate></item><item><title><![CDATA[Reply to Switch-Case on Mon, 31 Mar 2008 07:54:25 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Switch-Case mit Strings geht leider gar nicht. Musst Du wohl anders machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1483576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1483576</guid><dc:creator><![CDATA[MiP]]></dc:creator><pubDate>Mon, 31 Mar 2008 07:54:25 GMT</pubDate></item><item><title><![CDATA[Reply to Switch-Case on Mon, 31 Mar 2008 07:57:48 GMT]]></title><description><![CDATA[<p>Danke für den Hinweis, nutze ich else-If-Abfragen.<br />
Sieht zwar nicht schön aus, aber anders gehts nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1483578</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1483578</guid><dc:creator><![CDATA[NewInC]]></dc:creator><pubDate>Mon, 31 Mar 2008 07:57:48 GMT</pubDate></item><item><title><![CDATA[Reply to Switch-Case on Mon, 31 Mar 2008 13:22:36 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>alternativ kannst Du evtl. eine std::map anlegen. Ist elegant, aber bisweilen oversized oder unpraktisch (z.B. wenn die Aufgaben der einzelnen Zweige zu unterschiedlich oder untereinander abhängig sind).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1483763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1483763</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 31 Mar 2008 13:22:36 GMT</pubDate></item><item><title><![CDATA[Reply to Switch-Case on Mon, 31 Mar 2008 14:00:17 GMT]]></title><description><![CDATA[<p>Wenn du uns etwas mehr ueber das Problem erzaehlst, das du mit dem string-switch loesen willst, kann dir vielleicht auch jemand eie Alternative zeigen, die das umgehen.</p>
<p>Wenn die Moeglichkeiten in der switch-anweisung viele sind (oder viele werden koennen), dann wird eine if-else kaskade schnell unuebersichtlich und grausam zu warten. Die oben angesprochene Loesung mit der map koennte etwa wie folgt aussehn:</p>
<pre><code class="language-cpp">void processString(std::string const&amp; str) {
  enum { Bla, Blubb, Bla2, Omfg };  //die integralen werte, in die die strings uebersetzt werden
  static std::map&lt;std::string, int&gt; smap; //einmalig angelegtes &quot;woerterbuch&quot;
  static struct S{ S(){  //der ctor des Objekts traegt die Werte ins &quot;woerterbuch&quot; ein
    smap[&quot;bla&quot;] = Bla;
    smap[&quot;blubb&quot;] = Blubb;
    smap[&quot;BLUBB&quot;] = Blubb;
    smap[&quot;bla2&quot;] = Bla2;
    smap[&quot;omfg&quot;] = Omfg;
  }} s;

  switch(smap[str]) {
    case Bla: /*...*/
    case Blubb: /*..*/
    //...
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1483795</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1483795</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 31 Mar 2008 14:00:17 GMT</pubDate></item><item><title><![CDATA[Reply to Switch-Case on Mon, 31 Mar 2008 16:12:31 GMT]]></title><description><![CDATA[<p>Genau ... und manchmal geht's auch ohne anschließendes switch und man kann gleich den map-Wert weiterverwenden:</p>
<pre><code class="language-cpp">static std::map&lt;std::string, int&gt; offsetMap; //einmalig angelegtes &quot;woerterbuch&quot;
  static struct S{ S(){  //der ctor des Objekts traegt die Werte ins &quot;woerterbuch&quot; ein
    offsetMap[&quot;bla&quot;] = 1;
    offsetMap[&quot;blubb&quot;] = 3;
    offsetMap[&quot;BLUBB&quot;] = 17;
    offsetMap[&quot;bla2&quot;] = -2;
    offsetMap[&quot;omfg&quot;] = 3;
  }} s;

  int i = getVal() + offsetMap[str];
// kleine Warnung: operator[]() arbeitet ein wenig unerwartet bei nicht vorhandenen Elementen !!
</code></pre>
<p>Oder man füllt die Map mit Funktionszeigern oder .... oder ...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1483893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1483893</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 31 Mar 2008 16:12:31 GMT</pubDate></item><item><title><![CDATA[Reply to Switch-Case on Wed, 16 Apr 2008 11:18:28 GMT]]></title><description><![CDATA[<p>das ist selbst mir gerade sehr von nutzem...<br />
kurz und anschaulich beschrieben, ich danke mal.</p>
<p>hab mal ne andere frage zum switch-case. wie baue ich dort eine &quot;else&quot;-ähnliche anweisung ein?</p>
<p>habe zum beispiel:</p>
<pre><code class="language-cpp">[code]switch(nummer){
	case 1: problempointer = &amp;problem1; 
                     break;
	case 8: problempointer = &amp;problem8;
		     break;		
	case 9: problempointer = &amp;problem9;
		     break;	
		};	 
[/code]
</code></pre>
<p>und möchte nun so etwas sagen wie:<br />
&quot;case else: cout &lt;&lt; &quot;\nKeine Problemlösung bekannt!&quot;</p>
<p>ist sicher recht einfach, find nur nichts dazu, seh wohl grad den wald vor lauter bäumen nicht.<br />
oder bediene google und die forensuchfunktion falsch <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/1492892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1492892</guid><dc:creator><![CDATA[Apocalypso]]></dc:creator><pubDate>Wed, 16 Apr 2008 11:18:28 GMT</pubDate></item><item><title><![CDATA[Reply to Switch-Case on Wed, 16 Apr 2008 11:24:06 GMT]]></title><description><![CDATA[<p>Wenn ich Dich richtig verstehe, suchst Du nach 'default' (wird ausgeführt, wenn keine andere Bedingung erfüllt wurde:</p>
<pre><code class="language-cpp">switch ()
{
  case : ;
  break;
  case : ;
  break;
  default: ;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1492895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1492895</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 16 Apr 2008 11:24:06 GMT</pubDate></item><item><title><![CDATA[Reply to Switch-Case on Wed, 16 Apr 2008 11:34:32 GMT]]></title><description><![CDATA[<p>Ich möche nochmal darauf hinweisen, dass die Verwendung der map mitunter einen ganz enormen Performance-Vorteil mit sich bringen kann. Noch besser wäre aber die Verwendung einer Hashtabelle ( <code>std::tr1::unordered_map</code> ). In <a href="http://VB.NET" rel="nofollow">VB.NET</a> und C#, wo 'switch'-Anweisungen mit Strings erlaubt sind, wandelt der Compiler lange 'switch'-Abfragen auf Strings intern automatisch in die Verwendung einer Hashtabelle um.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1492901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1492901</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 16 Apr 2008 11:34:32 GMT</pubDate></item><item><title><![CDATA[Reply to Switch-Case on Wed, 16 Apr 2008 15:10:57 GMT]]></title><description><![CDATA[<p>meißt reicht doch ein enum:</p>
<pre><code class="language-cpp">enum Auswahl{
    OPTION1
    OPTION2
    FOO
    BAR
    FOOBAR
    BLA
}

//[...]

Auswahl auswahl = BLA;

//[...]

switch(auswahl){
    case OPTION1:
        break;
    case OPTION2:
        break;
    case FOO:
        break;
    case BAR:
        break;
    case FOOBAR:
        break;
    case BLA:
        break;
}

//[...]
</code></pre>
<p>dann sieht das im Editor wie TEXT aus, Eingabeabfragen funktionieren so nicht, da sind die anderen Lösungen besser, aber alles was c++ intern ist lässt sich so realisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1493058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1493058</guid><dc:creator><![CDATA[Krux]]></dc:creator><pubDate>Wed, 16 Apr 2008 15:10:57 GMT</pubDate></item><item><title><![CDATA[Reply to Switch-Case on Mon, 21 Apr 2008 07:52:37 GMT]]></title><description><![CDATA[<p>... für die antwort und die weiteren hinweise zur map...<br />
wünsche nen angenehmen start in die woche!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495420</guid><dc:creator><![CDATA[Apocalypso]]></dc:creator><pubDate>Mon, 21 Apr 2008 07:52:37 GMT</pubDate></item></channel></rss>