<?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[Tipps&#x2F;Ratschläge zur Isolierung eines Codes aus einer Textdatei]]></title><description><![CDATA[<p>hi, ich ersuche Hilfe bzw Tipps um folgendes zu realisieren:</p>
<p>Ich habe einen &quot;Code&quot; in einer Textdatei und möchte diesen Code dann in meinem Programm abschnittweise in einer Variable bzw einem Container speichern (Hier bereits das erste Problem: Welcher Container? std::vector? std::map?).<br />
Ich möchte/muss es abschnittweise speichern, da der Code folgendermaßen aussieht:</p>
<pre><code>//Code-Anfang
[BEZEICHNUNG]
Key1 = Wert1
OptionalerKey1 = OptionalerWert1
Key2 = Wert2
Key3 = Wert3
OptionalerKey2 = OptionalerWert2
Key4 = Wert4
Key5 = Wert5
//Code-Ende

//Code-Anfang
[NEUE_BEZEICHNUNG]
//usw.
</code></pre>
<p>Die Kommentarzeilen, dass ein neuer Code beginnt bzw. endet gibt es im Original natürlich nicht...</p>
<p>Da ich leider bereits beim Aussuchen des Containers Probleme hatte/habe, konnte ich mir bezüglich der Isolierung des Codes noch keine wirklichen Gedanken machen, weshalb ich hier auf einige Tipps/Ratschläge hoffe</p>
<p>Mfg Stephen</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/290498/tipps-ratschläge-zur-isolierung-eines-codes-aus-einer-textdatei</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 12:35:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/290498.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 27 Jul 2011 17:31:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Tipps&#x2F;Ratschläge zur Isolierung eines Codes aus einer Textdatei on Wed, 27 Jul 2011 17:31:53 GMT]]></title><description><![CDATA[<p>hi, ich ersuche Hilfe bzw Tipps um folgendes zu realisieren:</p>
<p>Ich habe einen &quot;Code&quot; in einer Textdatei und möchte diesen Code dann in meinem Programm abschnittweise in einer Variable bzw einem Container speichern (Hier bereits das erste Problem: Welcher Container? std::vector? std::map?).<br />
Ich möchte/muss es abschnittweise speichern, da der Code folgendermaßen aussieht:</p>
<pre><code>//Code-Anfang
[BEZEICHNUNG]
Key1 = Wert1
OptionalerKey1 = OptionalerWert1
Key2 = Wert2
Key3 = Wert3
OptionalerKey2 = OptionalerWert2
Key4 = Wert4
Key5 = Wert5
//Code-Ende

//Code-Anfang
[NEUE_BEZEICHNUNG]
//usw.
</code></pre>
<p>Die Kommentarzeilen, dass ein neuer Code beginnt bzw. endet gibt es im Original natürlich nicht...</p>
<p>Da ich leider bereits beim Aussuchen des Containers Probleme hatte/habe, konnte ich mir bezüglich der Isolierung des Codes noch keine wirklichen Gedanken machen, weshalb ich hier auf einige Tipps/Ratschläge hoffe</p>
<p>Mfg Stephen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2098643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2098643</guid><dc:creator><![CDATA[MasterStephen]]></dc:creator><pubDate>Wed, 27 Jul 2011 17:31:53 GMT</pubDate></item><item><title><![CDATA[Reply to Tipps&#x2F;Ratschläge zur Isolierung eines Codes aus einer Textdatei on Wed, 27 Jul 2011 17:34:43 GMT]]></title><description><![CDATA[<p>pro Abschnitt eine std::map&lt;string,string&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2098644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2098644</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 27 Jul 2011 17:34:43 GMT</pubDate></item><item><title><![CDATA[Reply to Tipps&#x2F;Ratschläge zur Isolierung eines Codes aus einer Textdatei on Wed, 27 Jul 2011 17:37:31 GMT]]></title><description><![CDATA[<p>Ich würde eine mehrdimensionale Struktur dafür verwenden map&lt;string,map&lt;string,string&gt;&gt; (der Schlüssel der äußeren Ebene ist die Bezeichnung, auf der inneren Ebene stehen Schlüssel/Wert-Paare).</p>
<p>PS: Wenn du unter Windows unterwegs bist - ist eventuell <a href="http://msdn.microsoft.com/en-us/library/ms724353(v=VS.85).aspx" rel="nofollow">GetPrivateProfileString</a> und Kollegen etwas für dich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2098646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2098646</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 27 Jul 2011 17:37:31 GMT</pubDate></item><item><title><![CDATA[Reply to Tipps&#x2F;Ratschläge zur Isolierung eines Codes aus einer Textdatei on Wed, 27 Jul 2011 20:17:41 GMT]]></title><description><![CDATA[<p>Hm, da wurde ich wohl nicht ganz verstanden... hab mich zu unklar ausgedrückt.<br />
Mir geht es nicht darum, die einzelnen Key-Wert-Paare zu speichern, das ist egal, es geht einzig allein um die Zeilen.<br />
Vllt etwas klarer ausgedrückt:</p>
<pre><code>//Code-Anfang
[BEZEICHNUNG]
Zeile1
OptZeile1
Zeile2
Zeile3
OptZeile2
Zeile4
Zeile5
//Code-Ende

//Code-Anfang
[NEUE_BEZEICHNUNG]
//usw.
</code></pre>
<p>Sinn dahinter ist folgender: Der Benutzer soll später mittels bestimmter Funktionen in den gespeicherten Daten bestimmte Bezeichner finden können und diese dann ersetzen.</p>
<p>Hier mal mein Idee (aus dem Kopf getippt, deshalb evt. Fehler entschuldigen)</p>
<pre><code class="language-cpp">vector&lt;map&lt;int, string&gt;&gt; storage;				//Großer Container
ifstream streamIn(&quot;testfile.txt&quot;);				//Testdatei
map&lt;int, string&gt; data;						//Mein Container
int lineCount;							//Int zum Ermitteln der Anzahl der Zeilen
bool blockInUse = false;					//Bool; überprüft, ob ein Codeblock &quot;bearbeitet&quot; wird

while(!streamIn.eof())
{
	string line;						//Zeile

	getline(streamIn, line);				//Datei wird zeilenweise eingelesen

	if(line.empty()) 					//Leere Zeile übersprungen
		continue;

	if(line[0] == '[' &amp;&amp; blockInUse == false)		//Falls die Zeile mit '[' beginnt (-&gt; &quot;[BEZEICHNER]&quot; und kein Codeblock bearbeitet wird ...
	{
		blockInUse = true;				//... wird ein Block &quot;bearbeitet&quot;
		lineCount = 0;					//Zeilen auf 0						
	}

	if(line[0] == '[' &amp;&amp; blockInUse == true)		//Falls die Zeile mit '[' beginnt (-&gt; s.o.) und ein Block bearbeitet wird ...
	{
		storage.push_back(data);			//Wird die map dem großen Container hinzugefügt. PROBLEM: Falls nicht wieder alle Werte belegt sind (OptWerte), werden diese trotzdem dem großen Container hinzugefügt -&gt; Problem!
		blockInUse == false;				//Block wird nicht mehr bearbeitet
		continue;					//Schleife von vorn...
	}

	data[lineCount] = line;					//Falls -^ nicht eintritt, wird die Zeile &quot;lineCount&quot; mit dem Wert &quot;line&quot; der map hinzugefügt
	++lineCount;						//Wir springen in die nächste Zeile-&gt;lineCount wird inkrementiert
}
</code></pre>
<p>Wie man im Code erkennen kann, ist das nicht sonderlich ausgereift...</p>
<p>Das Problem ist immer noch, welcher Container bietet sich an? (Man muss auch bedenken, dass der Nutzer später darauf zugreifen soll (Spricht für map, da man hier leicht mit map.find() arbeiten kann). Allerdings wie kann ich die einzelnen Codeblöcke überhaupt richtig isolieren... die oben gezeigte Pseudomethode finde ich persönlich nicht wirklich schön und sicher ist es wohl auch nicht...</p>
<p>Mfg Stephen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2098719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2098719</guid><dc:creator><![CDATA[MasterStephen]]></dc:creator><pubDate>Wed, 27 Jul 2011 20:17:41 GMT</pubDate></item><item><title><![CDATA[Reply to Tipps&#x2F;Ratschläge zur Isolierung eines Codes aus einer Textdatei on Wed, 27 Jul 2011 20:35:07 GMT]]></title><description><![CDATA[<p>Wie gesagt, mit einer map&lt;&gt; kannst du die Zuordnung der Sektionsbezeichner zu den Sektionen (Sub-Maps) herstellen. Das Parsen der Datei mußt du dann natürlich selber erledigen (btw, so wie dein Beispielcode aussieht, packst du die leeren Blöcke sofort in deinen vector&lt;&gt;):</p>
<pre><code class="language-cpp">map&lt;string, blockinhalt&gt; daten;
while(getline(datei, zeile))
{
  if(zeile[0]=='[') // Anfang neuer Block
  {
    daten[aktblock] = block;
    aktblock = zeile;
    block.clear()
  }
  else // Datenzeilen
    block.push_back(zeile);
}
</code></pre>
<p>PS: Was du mit optionalen oder notwendigen Zeilen je Sektor machst, mußt du selber wissen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2098731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2098731</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 27 Jul 2011 20:35:07 GMT</pubDate></item><item><title><![CDATA[Reply to Tipps&#x2F;Ratschläge zur Isolierung eines Codes aus einer Textdatei on Wed, 27 Jul 2011 21:40:25 GMT]]></title><description><![CDATA[<p>Also ich stehe glaube ich total auf dem Schlauch...</p>
<p>Du schlägst vor, dass ich eine map&lt;string, vector&lt;string&gt;&gt; erstelle, die den Codeblock so speichert: (Bsp)</p>
<pre><code>test_map[&quot;Funktion_1&quot;] = Vector_Mit_Den_Zeilen_des_CodeBlocks;
</code></pre>
<p>Hab ich das soweit verstanden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2098760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2098760</guid><dc:creator><![CDATA[MasterStephen]]></dc:creator><pubDate>Wed, 27 Jul 2011 21:40:25 GMT</pubDate></item><item><title><![CDATA[Reply to Tipps&#x2F;Ratschläge zur Isolierung eines Codes aus einer Textdatei on Thu, 28 Jul 2011 07:23:28 GMT]]></title><description><![CDATA[<p>MasterStephen schrieb:</p>
<blockquote>
<p>Sinn dahinter ist folgender: Der Benutzer soll später mittels bestimmter Funktionen in den gespeicherten Daten bestimmte Bezeichner finden können und diese dann ersetzen.</p>
</blockquote>
<p>Auch dann wäre es doch klasse, wenn er die Key-Value paare vorliegen hat, oder? Boost.Program_Options nimmt da einen guten Batzen Arbeit ab <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/2098834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2098834</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 28 Jul 2011 07:23:28 GMT</pubDate></item><item><title><![CDATA[Reply to Tipps&#x2F;Ratschläge zur Isolierung eines Codes aus einer Textdatei on Thu, 28 Jul 2011 09:28:36 GMT]]></title><description><![CDATA[<p>MasterStephen schrieb:</p>
<blockquote>
<p>Also ich stehe glaube ich total auf dem Schlauch...</p>
<p>Du schlägst vor, dass ich eine map&lt;string, vector&lt;string&gt;&gt; erstelle, die den Codeblock so speichert: (Bsp)</p>
<pre><code>test_map[&quot;Funktion_1&quot;] = Vector_Mit_Den_Zeilen_des_CodeBlocks;
</code></pre>
<p>Hab ich das soweit verstanden?</p>
</blockquote>
<p>So ähnlich, ich glaub er wollte aber Maps von diesem Typ noch in eine andere Map stecken, die die Gruppen enthält.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2098875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2098875</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Thu, 28 Jul 2011 09:28:36 GMT</pubDate></item></channel></rss>