<?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[Bezeichnungen der Integers einer Enumeration erhalten]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Enumeration</p>
<pre><code class="language-cpp">enum Nds_Left { NONE_LEFT, FIRST_LEFT, SECOND_LEFT, THIRD_LEFT, ALL_LEFT, FIRST_TWO_LEFT };
</code></pre>
<p>Gibt es dann eine Möglichkeit, die Zuordnung (eines Integers zu einem String)</p>
<p>0 -&gt; &quot;NONE_LEFT&quot;<br />
1 -&gt; &quot;FIRST_LEFT&quot;<br />
...<br />
5 -&gt; &quot;FIRST_TWO_LEFT&quot;</p>
<p>zu erhalten?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/230131/bezeichnungen-der-integers-einer-enumeration-erhalten</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 10:01:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/230131.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 21 Dec 2008 11:58:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bezeichnungen der Integers einer Enumeration erhalten on Sun, 21 Dec 2008 11:58:20 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Enumeration</p>
<pre><code class="language-cpp">enum Nds_Left { NONE_LEFT, FIRST_LEFT, SECOND_LEFT, THIRD_LEFT, ALL_LEFT, FIRST_TWO_LEFT };
</code></pre>
<p>Gibt es dann eine Möglichkeit, die Zuordnung (eines Integers zu einem String)</p>
<p>0 -&gt; &quot;NONE_LEFT&quot;<br />
1 -&gt; &quot;FIRST_LEFT&quot;<br />
...<br />
5 -&gt; &quot;FIRST_TWO_LEFT&quot;</p>
<p>zu erhalten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1633534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1633534</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Sun, 21 Dec 2008 11:58:20 GMT</pubDate></item><item><title><![CDATA[Reply to Bezeichnungen der Integers einer Enumeration erhalten on Sun, 21 Dec 2008 12:08:50 GMT]]></title><description><![CDATA[<p>nein, eine in die sprache eingebaute lösung gibt es nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1633543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1633543</guid><dc:creator><![CDATA[besserwisser]]></dc:creator><pubDate>Sun, 21 Dec 2008 12:08:50 GMT</pubDate></item><item><title><![CDATA[Reply to Bezeichnungen der Integers einer Enumeration erhalten on Sun, 21 Dec 2008 12:47:52 GMT]]></title><description><![CDATA[<p>Das kannst du ganz gut mit einer std::map machen.</p>
<pre><code class="language-cpp">#include &lt;map&gt;
...
std::map&lt;unsigned int , std::string&gt; enums;
enums.insert (std::pair&lt;int,std::string&gt; ( 0 , &quot;NONE_LEFT&quot; ));
enums.insert (std::pair&lt;int,std::string&gt; ( 1 , &quot;FIRST_LEFT&quot; &quot; ));
...

std::cout &lt;&lt; enums[ 0 ];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1633552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1633552</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 21 Dec 2008 12:47:52 GMT</pubDate></item><item><title><![CDATA[Reply to Bezeichnungen der Integers einer Enumeration erhalten on Sun, 21 Dec 2008 13:55:04 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;map&gt;
...
std::map&lt;unsigned int , std::string&gt; enums;
enums.insert (std::pair&lt;int,std::string&gt; ( 0 , &quot;NONE_LEFT&quot; ));
enums.insert (std::pair&lt;int,std::string&gt; ( 1 , &quot;FIRST_LEFT&quot; &quot; ));
...
	
std::cout &lt;&lt; enums[ 0 ];
</code></pre>
</blockquote>
<p>Ein wenig komplex der Code ... mach das doch einfacher:</p>
<pre><code class="language-cpp">#include &lt;map&gt;
// ...
enum Nds_Left { NONE_LEFT, FIRST_LEFT, SECOND_LEFT, THIRD_LEFT, ALL_LEFT, FIRST_TWO_LEFT };
// ...
std::map&lt;Nds_Left, std::string&gt; enums;
enums[NONE_LEFT]  = &quot;NONE_LEFT&quot;;
enums[FIRST_LEFT] = &quot;FIRST_LEFT&quot;;
// ...

std::cout &lt;&lt; enums[NONE_LEFT];
</code></pre>
<p>Also die ganzen <code>insert</code> mit den <code>std::pair</code> , wo du nicht einmal <code>std::make_pair</code> verwendest, sind nicht nötig. Der <code>operator []</code> legt automatisch ein neues Objekt an, wenn es nicht vorhanden ist.</p>
<p>Man könnte es übrigens auch über einen <code>std::vector</code> lösen, sofern die Enumeration bei 0 beginnt und fortlaufend ist:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
// ...
enum Nds_Left { NONE_LEFT = 0, FIRST_LEFT, SECOND_LEFT, THIRD_LEFT, ALL_LEFT, FIRST_TWO_LEFT };
// ...
std::vector&lt;std::string&gt; enums;
enums.push_back(&quot;NONE_LEFT&quot;);
enums.push_back(&quot;FIRST_LEFT&quot;);
// ...

std::cout &lt;&lt; enums[NONE_LEFT];
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1633576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1633576</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 21 Dec 2008 13:55:04 GMT</pubDate></item><item><title><![CDATA[Reply to Bezeichnungen der Integers einer Enumeration erhalten on Sun, 21 Dec 2008 14:03:06 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">const char* Nds_Left[] = { &quot;NONE_LEFT&quot;, &quot;FIRST_LEFT&quot;, &quot;SECOND_LEFT&quot;, &quot;THIRD_LEFT&quot;, &quot;ALL_LEFT&quot;, &quot;FIRST_TWO_LEFT&quot; };
std::map&lt;unsigned int , std::string&gt; enums;
for ( unsigned int i=0; i&lt;sizeof(Nds_Left)/sizeof(*Nds_Left); ++i )
    enums[i] = Nds_Left[i];
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1633579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1633579</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 21 Dec 2008 14:03:06 GMT</pubDate></item><item><title><![CDATA[Reply to Bezeichnungen der Integers einer Enumeration erhalten on Sun, 21 Dec 2008 14:03:13 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<pre><code class="language-cpp">enums[NONE_LEFT]  = &quot;NONE_LEFT&quot;; 
enums[FIRST_LEFT] = &quot;FIRST_LEFT&quot;;
</code></pre>
</blockquote>
<p>Sorry Dravere, ich konnte der Versuchung nicht widerstehen, es mit Makros zu erledigen. <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>
<pre><code class="language-cpp">#define INSERT_ENUM(VALUE) enums[VALUE] = #VALUE

INSERT_ENUM(NONE_LEFT);
INSERT_ENUM(FIRST_LEFT);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1633580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1633580</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 21 Dec 2008 14:03:13 GMT</pubDate></item><item><title><![CDATA[Reply to Bezeichnungen der Integers einer Enumeration erhalten on Sun, 21 Dec 2008 14:06:33 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Ein wenig komplex der Code ... mach das doch einfacher:</p>
</blockquote>
<p>Hmm. Ich habe mir zuerst eh überlegt, ob ich überhaupt ein Beispiel machen soll. Und dann ist halt das schnell draus geworden.<br />
Mir ist das mit dem vector auch durch den Kopf und auch das von Badestrand. Es gibt so verdammt viele Möglichkeiten das zu machen. Ich habe einfach das erstbeste genommen.;)<br />
(Nur das von Nexus ist mir nicht einmal durch den Kopf.. *hust* böse *hust*)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1633581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1633581</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 21 Dec 2008 14:06:33 GMT</pubDate></item><item><title><![CDATA[Reply to Bezeichnungen der Integers einer Enumeration erhalten on Sun, 21 Dec 2008 14:12:41 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Sorry Dravere, ich konnte der Versuchung nicht widerstehen, es mit Makros zu erledigen. <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>*seufz*<br />
Aber dann doch bitte so:</p>
<pre><code class="language-cpp">#define EVIL_MACRO_WITH_PREFIX_TO_PREVENT_MALFUNCTION_INSERT_ENUM(MAP, VALUE) MAP[VALUE] = #VALUE

// ...
std::map&lt;Nds_Left, char const*&gt; enums;
EVIL_MACRO_WITH_PREFIX_TO_PREVENT_MALFUNCTION_INSERT_ENUM(enums, NONE_LEFT);
EVIL_MACRO_WITH_PREFIX_TO_PREVENT_MALFUNCTION_INSERT_ENUM(enums, FIRST_LEFT);
</code></pre>
<p>So richtig à la Boost, dort kommen mir die Makros auch immer so vor <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>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13210">@Badestrand</a>,<br />
Wenn die Enumeration bei 0 beginnt und fortlaufend ist, ist die Map gar nicht mehr nötig und dann wohl eine der bisher besten Lösungen <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>
<p>Grüssli</p>
<p>Edit: Makro == Deutsch &amp;&amp; Macro == Englisch <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/1633582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1633582</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 21 Dec 2008 14:12:41 GMT</pubDate></item><item><title><![CDATA[Reply to Bezeichnungen der Integers einer Enumeration erhalten on Sun, 21 Dec 2008 17:04:27 GMT]]></title><description><![CDATA[<p>auch c++ hat statische, konstante arrays. was badestrand geschrieben hat, sollte zum teil schon die lösung sein. zumindest die erste zeile reicht schon vollkommena us. map ist vollkommen nutzlos und macht euren code nur viel länger und das binary fett.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1633672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1633672</guid><dc:creator><![CDATA[besserwisser]]></dc:creator><pubDate>Sun, 21 Dec 2008 17:04:27 GMT</pubDate></item><item><title><![CDATA[Reply to Bezeichnungen der Integers einer Enumeration erhalten on Tue, 23 Dec 2008 16:10:24 GMT]]></title><description><![CDATA[<p>Das statische Array geht aber auch nur, wenn die Werte der Enumerationskonstanten schön nacheinander liegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634719</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 23 Dec 2008 16:10:24 GMT</pubDate></item></channel></rss>