<?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[Inhalt von Variablen als Name benutzen?]]></title><description><![CDATA[<p>Hi</p>
<p>Ein ganz einfaches Programm, es geht nur um die Zeile mit dem --&gt;</p>
<pre><code class="language-cpp">struct automarke{
  string name;
};

int main()
{ automarke marke1;
  automarke marke2;
  marke1.name=&quot;tiefer und breiter&quot;;
  marke2.name=&quot;hoeher und schneller&quot;;
  for(int i = 0;i&lt;2;i++){
--&gt;    cout &lt;&lt; &quot;marke %i heisst: &quot; &lt;&lt; marke%i.name &lt;&lt; endl;
  }
}
</code></pre>
<p>Meine Frage: Wie sage ich c++ das er sowohl im string, als auch beim marke&quot;i&quot;.name das i durch den Inhalt von i ersetzt und nicht als einen Buchstaben behandelt? Ich bin mir ziemlich sicher das es geht, aber ich finde einfach nicht wie. Google hat mich zu 100 Hello World Programmen geschickt, aber da ich mir nicht einmal sicher bin wie das was ich suche heisst...</p>
<p>Die Ausgabe sollte grob lauten:<br />
Marke 0 heisst tiefer und breiter<br />
Marke 1 heisst hoeher und schneller</p>
<p>Danke für alle Antworten schonmal</p>
<p>Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/277683/inhalt-von-variablen-als-name-benutzen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 20:06:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/277683.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 22 Nov 2010 19:41:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Inhalt von Variablen als Name benutzen? on Mon, 22 Nov 2010 19:41:05 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Ein ganz einfaches Programm, es geht nur um die Zeile mit dem --&gt;</p>
<pre><code class="language-cpp">struct automarke{
  string name;
};

int main()
{ automarke marke1;
  automarke marke2;
  marke1.name=&quot;tiefer und breiter&quot;;
  marke2.name=&quot;hoeher und schneller&quot;;
  for(int i = 0;i&lt;2;i++){
--&gt;    cout &lt;&lt; &quot;marke %i heisst: &quot; &lt;&lt; marke%i.name &lt;&lt; endl;
  }
}
</code></pre>
<p>Meine Frage: Wie sage ich c++ das er sowohl im string, als auch beim marke&quot;i&quot;.name das i durch den Inhalt von i ersetzt und nicht als einen Buchstaben behandelt? Ich bin mir ziemlich sicher das es geht, aber ich finde einfach nicht wie. Google hat mich zu 100 Hello World Programmen geschickt, aber da ich mir nicht einmal sicher bin wie das was ich suche heisst...</p>
<p>Die Ausgabe sollte grob lauten:<br />
Marke 0 heisst tiefer und breiter<br />
Marke 1 heisst hoeher und schneller</p>
<p>Danke für alle Antworten schonmal</p>
<p>Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1984351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984351</guid><dc:creator><![CDATA[Kessl]]></dc:creator><pubDate>Mon, 22 Nov 2010 19:41:05 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von Variablen als Name benutzen? on Mon, 22 Nov 2010 20:00:51 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int main() 
{ 
automarke[2] marke; 
  marke[0].name=&quot;tiefer und breiter&quot;; 
  marke[1].name=&quot;hoeher und schneller&quot;; 
  for(int i = 0;i&lt;2;i++){ 
    cout &lt;&lt; &quot;marke %i heisst: &quot; &lt;&lt; marke[i].name &lt;&lt; endl; 
  } 
}
</code></pre>
<p>Arrays heisst das magische Wort. (siehe aber auch std::vector oder boost::array).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1984364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984364</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 22 Nov 2010 20:00:51 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von Variablen als Name benutzen? on Tue, 23 Nov 2010 09:26:18 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int main() 

    cout &lt;&lt; &quot;marke &quot; &lt;&lt; i &lt;&lt; &quot;heisst: &quot; &lt;&lt; marke[i].name &lt;&lt; endl;
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1984498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984498</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 23 Nov 2010 09:26:18 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von Variablen als Name benutzen? on Tue, 23 Nov 2010 09:57:47 GMT]]></title><description><![CDATA[<p>Kessl schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Nur zur Ergänzung: Grundsätzlich gibt es zur Laufzeit keine Variablennamen mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1984513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984513</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 23 Nov 2010 09:57:47 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von Variablen als Name benutzen? on Tue, 23 Nov 2010 12:00:07 GMT]]></title><description><![CDATA[<p>Kessl schrieb:</p>
<blockquote>
<p>Ein ganz einfaches Programm, es geht nur um die Zeile mit dem --&gt;</p>
<pre><code class="language-cpp">struct automarke{
  string name;
};

int main()
{ automarke marke1;
  automarke marke2;
  marke1.name=&quot;tiefer und breiter&quot;;
  marke2.name=&quot;hoeher und schneller&quot;;
  for(int i = 0;i&lt;2;i++){
--&gt;    cout &lt;&lt; &quot;marke %i heisst: &quot; &lt;&lt; marke%i.name &lt;&lt; endl;
  }
}
</code></pre>
<p>Meine Frage: Wie sage ich c++ das er sowohl im string, als auch beim marke&quot;i&quot;.name das i durch den Inhalt von i ersetzt und nicht als einen Buchstaben behandelt?</p>
</blockquote>
<p>Namen sind Schall und Rauch. Wenn Du Dein Programm übersetzt, ist typischerweise nichts mehr von den Variablennamen &quot;marke1&quot; und &quot;marke2&quot; übrig. Damit das so klappt, wie Du es haben willst, müsste der Compiler ein Programm erzeugen, was irgendwo eine Tabelle automatisch anlegt, welche einen Variablennamen mit der Adresse eines Objekts verknüpft. Das ist allerdings Overhead, den man nicht immer gebrauchen kann. Das C++ Motto ist aber &quot;Don't pay for things you don't need&quot;. Wenn Du so eine Tabelle brauchst, erzeug sie dir selbst. In diesem Fall wäre ein Array (wie schon gezeigt) oder ein std::vector&lt;&gt; angebracht. In beiden Ansätzen kannst Du eines von mehreren Objekten über einen Index auswählen.</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;  // EXIT_SUCCESS Makro-Definition
#include &lt;iostream&gt; // std::cout
#include &lt;ostream&gt;  // std::endl
#include &lt;string&gt;   // std::string
#include &lt;vector&gt;   // std::vector&lt;&gt;

using namespace std;

int main()
{
  vector&lt;string&gt; automarken;
  automarken.push_back(&quot;tiefer und breiter&quot;);
  automarken.push_back(&quot;hoeher und schneller&quot;);
  const int anzahl = automarken.size();
  for(int i=0; i&lt;anzahl; ++i) {
    cout &lt;&lt; &quot;marke &quot; &lt;&lt; i &lt;&lt; &quot; heisst: &quot; &lt;&lt; automarken[i] &lt;&lt; endl;
  }
  return EXIT_SUCCESS;
}
</code></pre>
<p>kk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1984532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984532</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 23 Nov 2010 12:00:07 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von Variablen als Name benutzen? on Tue, 23 Nov 2010 10:47:31 GMT]]></title><description><![CDATA[<p>Eigentlich wäre in dem Fall eine Map angebrachter.</p>
<pre><code class="language-cpp">std::map&lt;std::string, std::string&gt; automarken;

automarken[&quot;marke1&quot;] = &quot;tiefer und breiter&quot;;
automarken[&quot;marke2&quot;] = &quot;hoeher und schneller&quot;

for (int i = 1; i &lt; automarken.size(); ++i)
{
    std::string name(&quot;marke&quot;);
    name += i + '0';
    std::cout &lt;&lt; name &lt;&lt; &quot; = &quot; &lt;&lt; automarken[name] &lt;&lt; std::endl;
}
</code></pre>
<p>Den Namen kann man sicherlich auch eleganter zusammen basteln. Es ist mir dazu nur keine fixe Lösung eingefallen. Nur ein stringstream, den man dann sinnvollerweise in einer Funktion nutzen sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1984544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984544</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Tue, 23 Nov 2010 10:47:31 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von Variablen als Name benutzen? on Tue, 23 Nov 2010 11:06:29 GMT]]></title><description><![CDATA[<p>Nick Unbekannt schrieb:</p>
<blockquote>
<p>Eigentlich wäre in dem Fall eine Map angebrachter.</p>
</blockquote>
<p>Warum?</p>
<p>Nachteile:<br />
- Es ist deutlich langsamer.<br />
- Es ist umständlicher, die Namen nach dem immer gleichen Schema zusammenzusetzen.</p>
<p>Vorteile:<br />
?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1984550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984550</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Tue, 23 Nov 2010 11:06:29 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von Variablen als Name benutzen? on Tue, 23 Nov 2010 11:31:01 GMT]]></title><description><![CDATA[<p>Michael E. schrieb:</p>
<blockquote>
<p>Nachteile:<br />
- Es ist deutlich langsamer.</p>
</blockquote>
<p>Nicht in dem Maße, dass es ins Gewicht fallen würde. Bei einem heftigen Gebrauch der Variablen sieht es wieder anders aus.</p>
<p>Michael E. schrieb:</p>
<blockquote>
<p>- Es ist umständlicher, die Namen nach dem immer gleichen Schema zusammenzusetzen.</p>
</blockquote>
<p>Nicht mehr, wenn man die von mir angesprochene extra Funktion hat.</p>
<p>Michael E. schrieb:</p>
<blockquote>
<p>Vorteile:<br />
?</p>
</blockquote>
<p>Es war nach einer Möglichkeit gefragt, Bezeichner zur Laufzeit festlegen zu können. Und da kommt man an einer Map nur schwer vorbei.</p>
<p>Es kommt letztendlich auf den Verwendungszweck an. Um ein paar Automarken zu verwalten ist es okay und die Dynamik gewünscht. Bei einem Videodecoder eher unpassend und die Dynamik auch nicht notwendig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1984566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984566</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Tue, 23 Nov 2010 11:31:01 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von Variablen als Name benutzen? on Tue, 23 Nov 2010 11:41:37 GMT]]></title><description><![CDATA[<p>Nick Unbekannt schrieb:</p>
<blockquote>
<p>Michael E. schrieb:</p>
<blockquote>
<p>- Es ist umständlicher, die Namen nach dem immer gleichen Schema zusammenzusetzen.</p>
</blockquote>
<p>Nicht mehr, wenn man die von mir angesprochene extra Funktion hat.</p>
</blockquote>
<p>Wenn man nur weit genug abstrahiert, ist alles einfach <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>
<blockquote>
<p>Es war nach einer Möglichkeit gefragt, Bezeichner zur Laufzeit festlegen zu können. Und da kommt man an einer Map nur schwer vorbei.</p>
</blockquote>
<p>Natürlich kommt man an ner Map vorbei, wenn wie hier nur auf Grund einer Ganzzahl unterschieden werden soll. Man sollte wissen, dass man für allgemeinere Fälle Maps benutzen kann, aber da du dich konkret auf &quot;diesen Fall&quot; beziehst, kann ich nicht nachvollziehen, warum du eine Map für &quot;angebrachter&quot; hälst als die genannten Lösungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1984569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984569</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Tue, 23 Nov 2010 11:41:37 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von Variablen als Name benutzen? on Tue, 23 Nov 2010 12:24:38 GMT]]></title><description><![CDATA[<p>Michael E. schrieb:</p>
<blockquote>
<p>Natürlich kommt man an ner Map vorbei, wenn wie hier nur auf Grund einer Ganzzahl unterschieden werden soll. Man sollte wissen, dass man für allgemeinere Fälle Maps benutzen kann, aber da du dich konkret auf &quot;diesen Fall&quot; beziehst, kann ich nicht nachvollziehen, warum du eine Map für &quot;angebrachter&quot; hälst als die genannten Lösungen.</p>
</blockquote>
<p>Titel des Themas war allerdings &quot;Inhalt von Variablen als Name benutzen?&quot;. Da ein klassisches Array als Lösung anzubieten, finde ich dann schon etwas zu speziell. Auch wenn man es für das konkrete Problem passend ist.<br />
Ich finde es nur ungünstig, wenn der Titel nicht zum Thema passt. Weil viele Leute als Standardantwort &quot;nutze die Suchfunktion&quot; oder Google geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1984585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984585</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Tue, 23 Nov 2010 12:24:38 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von Variablen als Name benutzen? on Tue, 23 Nov 2010 17:14:56 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Erstmal danke für alle Antworten.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18422">@drakon</a>: Das [2] muss hinter die marke, nicht hinter die automarke. Evtl. schaut ja irgendwer, irgendwann nochmal in den Thread rein.</p>
<p>Ansonsten kommt Map dem was ich machen will wohl am nächsten und da ich noch nie etwas damit gemacht habe wird das wohl das Mittel der Wahl werden. Auf Effizienz kommt es mir nicht wirklich an und arrays funktionieren zwar in dem schnell zusammengebauten Beispiel, aber wohl eher nicht in meinem Progrämmchen wo ich das ganze eigentlich nutzen wollte. Naja, ich habe viel Zeit daran rumzuspielen, ist ja alles nur zum Spass.</p>
<p>Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1984749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984749</guid><dc:creator><![CDATA[Kessl]]></dc:creator><pubDate>Tue, 23 Nov 2010 17:14:56 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von Variablen als Name benutzen? on Tue, 23 Nov 2010 20:19:13 GMT]]></title><description><![CDATA[<p>Ich glaube sowas wie</p>
<pre><code class="language-cpp">#define BOOST_PP_LOCAL_MACRO(n) cout &lt;&lt; &quot;marke &quot;#n&quot; heisst: &quot; &lt;&lt; marke##i.name &lt;&lt; endl; 
int main()
{
  ...
#include BOOST_PP_LOCAL_ITERATE(1, 5)
}
</code></pre>
<p>expandiert zu</p>
<pre><code class="language-cpp">int main()
{
  ...
  cout &lt;&lt; &quot;marke 1 heisst&quot; &lt;&lt; marke1.name &lt;&lt; endl;
  cout &lt;&lt; &quot;marke 2 heisst&quot; &lt;&lt; marke2.name &lt;&lt; endl;
  cout &lt;&lt; &quot;marke 3 heisst&quot; &lt;&lt; marke3.name &lt;&lt; endl;
  cout &lt;&lt; &quot;marke 4 heisst&quot; &lt;&lt; marke4.name &lt;&lt; endl;
  cout &lt;&lt; &quot;marke 5 heisst&quot; &lt;&lt; marke5.name &lt;&lt; endl;
}
</code></pre>
<p>(wo wir gerade alle Möglichkeiten auflisten)</p>
<p>Vorteile:<br />
- Implizites Loop unrolling.<br />
- Der Compiler die Reihenfolge ändern und häufig genutze Variablen an den Anfang nehmen.<br />
- Es ist (etwas?) schneller.<br />
- Er kann den Code so belassen und marke1 heisst immer noch marke1.<br />
- Wenn er immer nur auf einzelne Variablen zugreift, spart er sich ev. die beiden Klammern.</p>
<p>Nachteile:<br />
- Es ist viel umständlicher.<br />
- Es verwendet Makros.<br />
- Es verursacht Kopfschmerzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1984823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984823</guid><dc:creator><![CDATA[ContainerUnbekannt]]></dc:creator><pubDate>Tue, 23 Nov 2010 20:19:13 GMT</pubDate></item></channel></rss>