<?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[String to Konstante]]></title><description><![CDATA[<p>Hi,</p>
<p>die Frage kam sicherlich schon 10^99 Mal, aber wie macht man das geschickt? Ich habe beispielsweise gerade so was:</p>
<pre><code class="language-cpp">unsigned int charsToSuit( const std::string&amp; suits )
	{
		if(suits == &quot;dd&quot;) return SUIT_DD;
		if(suits == &quot;dh&quot;) return SUIT_DH;
		if(suits == &quot;ds&quot;) return SUIT_DS;
		if(suits == &quot;dc&quot;) return SUIT_DC;
		if(suits == &quot;hd&quot;) return SUIT_DD;
		if(suits == &quot;hh&quot;) return SUIT_DH;
		if(suits == &quot;hs&quot;) return SUIT_DS;
		if(suits == &quot;hc&quot;) return SUIT_DC;
		if(suits == &quot;sd&quot;) return SUIT_DD;
		if(suits == &quot;sh&quot;) return SUIT_DH;
		if(suits == &quot;ss&quot;) return SUIT_DS;
		if(suits == &quot;sc&quot;) return SUIT_DC;
		if(suits == &quot;cd&quot;) return SUIT_DD;
		if(suits == &quot;ch&quot;) return SUIT_DH;
		if(suits == &quot;cs&quot;) return SUIT_DS;
		if(suits == &quot;cc&quot;) return SUIT_DC;

		assert(&quot;suits invalid.&quot; &amp;&amp; false);
	}
</code></pre>
<p>Die &quot;Suits&quot; sind verknüpfbar über Bitoperatoren, daher unsigned int.</p>
<p>Geht das nicht irgendwie schöner? Mit einem Makrotrick oder so?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/314500/string-to-konstante</link><generator>RSS for Node</generator><lastBuildDate>Sat, 01 Aug 2026 04:32:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/314500.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 04 Mar 2013 14:20:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to String to Konstante on Mon, 04 Mar 2013 14:20:19 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>die Frage kam sicherlich schon 10^99 Mal, aber wie macht man das geschickt? Ich habe beispielsweise gerade so was:</p>
<pre><code class="language-cpp">unsigned int charsToSuit( const std::string&amp; suits )
	{
		if(suits == &quot;dd&quot;) return SUIT_DD;
		if(suits == &quot;dh&quot;) return SUIT_DH;
		if(suits == &quot;ds&quot;) return SUIT_DS;
		if(suits == &quot;dc&quot;) return SUIT_DC;
		if(suits == &quot;hd&quot;) return SUIT_DD;
		if(suits == &quot;hh&quot;) return SUIT_DH;
		if(suits == &quot;hs&quot;) return SUIT_DS;
		if(suits == &quot;hc&quot;) return SUIT_DC;
		if(suits == &quot;sd&quot;) return SUIT_DD;
		if(suits == &quot;sh&quot;) return SUIT_DH;
		if(suits == &quot;ss&quot;) return SUIT_DS;
		if(suits == &quot;sc&quot;) return SUIT_DC;
		if(suits == &quot;cd&quot;) return SUIT_DD;
		if(suits == &quot;ch&quot;) return SUIT_DH;
		if(suits == &quot;cs&quot;) return SUIT_DS;
		if(suits == &quot;cc&quot;) return SUIT_DC;

		assert(&quot;suits invalid.&quot; &amp;&amp; false);
	}
</code></pre>
<p>Die &quot;Suits&quot; sind verknüpfbar über Bitoperatoren, daher unsigned int.</p>
<p>Geht das nicht irgendwie schöner? Mit einem Makrotrick oder so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2304174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2304174</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Mon, 04 Mar 2013 14:20:19 GMT</pubDate></item><item><title><![CDATA[Reply to String to Konstante on Mon, 04 Mar 2013 14:26:08 GMT]]></title><description><![CDATA[<p>(unordered) map?</p>
<p>Die wahre Frage ist wohl, wieso suits ein string ist. Klingt dem Namen nach so, als sollte das ein ganz eigener Datentyp sein. Dann kann auch gar nicht so etwas wie ein ungültiger suit auftauchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2304175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2304175</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 04 Mar 2013 14:26:08 GMT</pubDate></item><item><title><![CDATA[Reply to String to Konstante on Mon, 04 Mar 2013 14:54:47 GMT]]></title><description><![CDATA[<p>Es handelt sich um einen Teil einer Benutzereingabe.</p>
<p>unordered_map erscheint mir wie mit Spatzen auf Kanonen geschossen. Oder sogar andersrum. Nein? Da muss ich dann erst wieder eine struct mit dieser Map erstellen, davon eine globale (übersetzungseinheits-lokale) Variable erzeugen und im ctor der struct das Ding initialisieren. Erscheint mir etwas viel Overhead. Da finde ich meine Variante schöner und sogar besser wartbar, da übersichtlicher.</p>
<p>Eigentlich will ich mir bisschen Schreibarbeit ersparen. Also so was wie:</p>
<pre><code class="language-cpp">RETURN_IF_SUIT_MATCH(suits, dd)
</code></pre>
<p>Das kriegt man mit Makro-Gefrickel sogar hin. Aber würdet ihr das machen oder eher nicht? Der Vorteil ist halt, dass ich mich hier zwei Mal vertippen könnte. Im anderen Fall nur einmal. Im Fehlerfall schafft das sicher weniger Verwirrung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2304188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2304188</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Mon, 04 Mar 2013 14:54:47 GMT</pubDate></item><item><title><![CDATA[Reply to String to Konstante on Mon, 04 Mar 2013 14:56:11 GMT]]></title><description><![CDATA[<p>Kann man die Rückgabewerte berechnen?</p>
<p>Ist dein Beispiel überhaupt richtig? Wieso ist so vieles D, wo ich einen anderen Buchstaben erwarten würde? Mit mehr Kontext könnte man besser helfen. Sonst bleibt es bei der Antwort mit der map oder eben deiner Variante. Je nach Größe der Grundmenge ist mal das eine, mal das andere günstiger.</p>
<p>Makros gingen natürlich auch, um vielen, sich in leichten Varianten wiederholenden Code elegant hinzuschreiben. Die Schwierigkeit ist, dass ich hier kein Muster erkennen kann, daher kann ich dir keine Lösung vormachen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2304197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2304197</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 04 Mar 2013 14:56:11 GMT</pubDate></item><item><title><![CDATA[Reply to String to Konstante on Mon, 04 Mar 2013 15:09:50 GMT]]></title><description><![CDATA[<p>Das Muster ist, dass im String nach dem if vorkommen soll, was davor vorkommt. Also ein simples Großschreiben nebst Dranhängen an SUIT_. Somit sind da zu viele Ds, richtig erkannt! Damit wollte ich veranschaulichen, dass diese Variante leichter zu Tippfehler führen kann. *hüstel* <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>
<p>Berechnen, hm... ja, das ginge, stimmt, das ist sogar äußerst klug. <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/2304204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2304204</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Mon, 04 Mar 2013 15:09:50 GMT</pubDate></item><item><title><![CDATA[Reply to String to Konstante on Mon, 04 Mar 2013 15:16:19 GMT]]></title><description><![CDATA[<p>Eisflamme schrieb:</p>
<blockquote>
<pre><code class="language-cpp">assert(&quot;suits invalid.&quot; &amp;&amp; false);
</code></pre>
</blockquote>
<p>So fängt man aber keine Eingabefehler ab.<br />
Ich würde das mit einer Ausnahme machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2304210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2304210</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 04 Mar 2013 15:16:19 GMT</pubDate></item><item><title><![CDATA[Reply to String to Konstante on Mon, 04 Mar 2013 15:19:50 GMT]]></title><description><![CDATA[<p>Ich glaube im &quot;Rund um die Programmierung&quot; Subforum hatte seldon mal eine Variante für Farben gepostet, die in etwa das macht, was du brauchst.</p>
<p>Das war im Thread hilfreiche Makros oder so, noch nicht so alt...</p>
<p>Edit: ne war hier im C++ Sub -&gt; <a href="http://www.c-plusplus.net/forum/p2301866#2301866" rel="nofollow">Guckste hier</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2304212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2304212</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 04 Mar 2013 15:19:50 GMT</pubDate></item><item><title><![CDATA[Reply to String to Konstante on Mon, 04 Mar 2013 15:21:42 GMT]]></title><description><![CDATA[<p>Hm, na ja, ich habe nur die halbe Wahrheit erzählt. Eigentlich sollte die Eingabe vorher schon gefiltert sein. Sollte ich aber Unsinn dabei betrieben haben, so könnte es sein, dass hier doch Mal Müll reinfliegt. Somit wird der Eingabefehler vorher schon abgefangen und falls ich das falsch mache, wird hier mein Programmierfehler abgefangen.</p>
<p>Ja, sollte wohl alles nicht passieren, passiert aber leider. Und dass ich diese Eingabe dennoch nicht in eine Klasse schreibe, hängt damit zusammen, dass der falsch formatierte String für den Benutzer richtig formatiert wird, d.h. da wird viel an Strings rumgewurschtelt.</p>
<p>Und das, was bei der Wurscht dann rauskommt, das landet letztendlich hier.</p>
<p>Skym0sh0:<br />
Hm, ja, habe ich gesehen, danke. Daraufhin fand ich das für meine Zwecke aber dann doch nicht so &quot;schön&quot; und wollte mich hier Mal erkundigen, ob ihr so ein Makro einführen würdet (eher als wie das Makro lautet, aber da ich selbst nie so sicher bin, was ich will, ist das im OP wahrscheinlich nicht so deutlich geworden, sorry).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2304213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2304213</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Mon, 04 Mar 2013 15:21:42 GMT</pubDate></item><item><title><![CDATA[Reply to String to Konstante on Mon, 04 Mar 2013 16:27:18 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">unsigned int charsToSuit( const std::string&amp; suits )
{
   unsigned int Suit = 0;
   for( char c : suits )
   {
      if( c == 'c' ) Suit |= SUIT_C;
      else if( c == 's' ) Suit |= SUIT_S;
      else if( c == 'h' ) Suit |= SUIT_H;
      else if( c == 'd' ) Suit |= SUIT_D;
   }
   return Suit;
}
</code></pre>
<p>Oder ist das völlig am Ziel vorbei?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2304240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2304240</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Mon, 04 Mar 2013 16:27:18 GMT</pubDate></item><item><title><![CDATA[Reply to String to Konstante on Mon, 04 Mar 2013 16:44:47 GMT]]></title><description><![CDATA[<p>Na ja, ich habe ja nicht umsonst in den Konstanten auch Bezeichnungen wie CC und CD drin.</p>
<p><code>x |= C | C;</code> ist dasselbe wie <code>x |= C;</code></p>
<p>Man soll bei mir aber durchaus ein Doppel-C von einem einfachen C unterscheiden können. <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/2304251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2304251</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Mon, 04 Mar 2013 16:44:47 GMT</pubDate></item><item><title><![CDATA[Reply to String to Konstante on Mon, 04 Mar 2013 17:26:57 GMT]]></title><description><![CDATA[<p>wie wärs wenn du die &quot;cc&quot;, &quot;cd&quot;, .. etc in einen index umrechnest und die zugehörigen SUIT_CC etc in einem integer array speicherst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2304284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2304284</guid><dc:creator><![CDATA[forschlach]]></dc:creator><pubDate>Mon, 04 Mar 2013 17:26:57 GMT</pubDate></item><item><title><![CDATA[Reply to String to Konstante on Mon, 04 Mar 2013 17:45:46 GMT]]></title><description><![CDATA[<p>forschlach schrieb:</p>
<blockquote>
<p>wie wärs wenn du die &quot;cc&quot;, &quot;cd&quot;, .. etc in einen index umrechnest und die zugehörigen SUIT_CC etc in einem integer array speicherst.</p>
</blockquote>
<p>Das wäre fast eine handgebastelte unordered_map.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2304291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2304291</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 04 Mar 2013 17:45:46 GMT</pubDate></item></channel></rss>