<?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[Code vereinfachen]]></title><description><![CDATA[<p>Abend,</p>
<p>ich habe eine Textdatei, die aus vielen Zeilen mit je 2 Wörtern (Key und Value) besteht:</p>
<pre><code>Name Foo
Binding Unit1
AddressU Wrap
...
</code></pre>
<p>Das will ich jetzt einlesen. Im Moment iteriere ich dazu in einer Schleife über die Zeilen und mache dann das:</p>
<pre><code class="language-cpp">if(strHasPrefix(tokens[0], &quot;Name&quot;))
   mName = tokens[1];
else if(strHasPrefix(tokens[0], &quot;Binding&quot;))
   mBinding = tokens[1];
else if(strHasPrefix(tokens[0], &quot;AddressU&quot;))
   mAddressU = tokens[1];
...
</code></pre>
<p>Geht natürlich, nur stört mich, dass das über viele Zeilen sehr geht, obwohl alles doch ähnlich ist. Kann man das verkürzen und eleganter machen?<br />
Ich dachte zunächst an eine map, also sowas: myMap[tokens[0&rsqb;&rsqb; = tokens[1];<br />
Das Problem dabei ist nur, dass das dann keine Validierung macht. Der würde dann blind alle Keys in die Map hauen, auch wenn es garkeine Schlüsselwörter sind. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/291259/code-vereinfachen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 20:37:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/291259.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 13 Aug 2011 23:22:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Code vereinfachen on Sat, 13 Aug 2011 23:22:27 GMT]]></title><description><![CDATA[<p>Abend,</p>
<p>ich habe eine Textdatei, die aus vielen Zeilen mit je 2 Wörtern (Key und Value) besteht:</p>
<pre><code>Name Foo
Binding Unit1
AddressU Wrap
...
</code></pre>
<p>Das will ich jetzt einlesen. Im Moment iteriere ich dazu in einer Schleife über die Zeilen und mache dann das:</p>
<pre><code class="language-cpp">if(strHasPrefix(tokens[0], &quot;Name&quot;))
   mName = tokens[1];
else if(strHasPrefix(tokens[0], &quot;Binding&quot;))
   mBinding = tokens[1];
else if(strHasPrefix(tokens[0], &quot;AddressU&quot;))
   mAddressU = tokens[1];
...
</code></pre>
<p>Geht natürlich, nur stört mich, dass das über viele Zeilen sehr geht, obwohl alles doch ähnlich ist. Kann man das verkürzen und eleganter machen?<br />
Ich dachte zunächst an eine map, also sowas: myMap[tokens[0&rsqb;&rsqb; = tokens[1];<br />
Das Problem dabei ist nur, dass das dann keine Validierung macht. Der würde dann blind alle Keys in die Map hauen, auch wenn es garkeine Schlüsselwörter sind. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2105836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2105836</guid><dc:creator><![CDATA[Uiyian]]></dc:creator><pubDate>Sat, 13 Aug 2011 23:22:27 GMT</pubDate></item><item><title><![CDATA[Reply to Code vereinfachen on Sat, 13 Aug 2011 23:26:07 GMT]]></title><description><![CDATA[<p>Soll er fehlende Tokens mit Standardwerten belegen?<br />
Soll er ungültige Tokens schweigend verschlucken? Mit Fehlermeldung raus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2105838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2105838</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 13 Aug 2011 23:26:07 GMT</pubDate></item><item><title><![CDATA[Reply to Code vereinfachen on Sat, 13 Aug 2011 23:27:10 GMT]]></title><description><![CDATA[<p>Map ist schon ein guter Ansatz, aber an der Stelle würde ich vermutlich nicht den Index-Operator nutzen, sondern find():</p>
<pre><code class="language-cpp">MyMap.insert(make_pair(&quot;Name&quot;, &quot;&quot;));
MyMap.insert(make_pair(&quot;Binding&quot;, &quot;&quot;);
...

map&lt;string,string&gt;::iterator pos = MyMap.find(tokens[0]);
if(pos!=MyMap.end())
  pos-&gt;second = tokens[1];
else
  cout&lt;&lt;&quot;Fehler bei Eingabe - unbekanntes Token\n&quot;;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2105839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2105839</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 13 Aug 2011 23:27:10 GMT</pubDate></item></channel></rss>