<?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[[gelöst] Unterschiedl. Textzeilen mit gleichem Aufbau (&amp;quot;String Int&amp;quot;) zerlegen und Wert in entspr. Variablen?]]></title><description><![CDATA[<p>Hi,</p>
<p>ich steh mal wieder vor einem mehr oder weniger kleinen Problem, aber vielleicht erstmal kurz zu dem was ich erreichen möchte. Ich habe eine Textdatei aus der ich mehrere Textzeilen Zeile für Zeile auslese mittels einer Schleife und der Inhalt wird in einem String gespeichert. Kommentare und Leerzeilen werden einfach ignoriert, die brauche ich ja nicht. Kurzes Beispiel:</p>
<pre><code>// Video Setup

FullscreenX	1680
FullscreenY	1050
WindowX		640
WindowY		480
BPP		16
Fullscreen	0
</code></pre>
<p>Nach dem ersten durchlauf meiner Schleife habe ich also als Inhalt in meinem String &quot;FullscreenX 1680&quot; stehen. Ich möchte nun diesen String, und auch alle weiteren, so bearbeiten das ich die 1680 hinterher als Wert in meiner entsprechenden Variable habe.</p>
<p>Kleines Beispiel:</p>
<pre><code class="language-cpp">int FullscreenX, FullscreenY, WindowX, WindowY, BPP;
bool Fullscreen;
// Code mit den Bedingungen für meine Schleife
{
    // die mir als Ergebnis in meinem String &quot;line&quot; eine Textzeile liefert
    sscanf( line.c_str(), &quot;FullscreenX %i&quot;, &amp;FullscreenX);
}
</code></pre>
<p>Dabei entstehen für mich nun einige Probleme. Zum einem klappt dieser Code nur für die erste Zeile. FullscreenX kann ich ja noch durch Platzhalter ersetzen, aber trotzdem speichert er den Inhalt ja immer in der gleichen Variable FullScreenX. Meine Idee wäre nun die Zahl in einer Variable z.B. int temp; zwischenzulagern und dann mittels eines switch zu überprüfen in welche Variable mein Wert muss. Leider hapert es genau dabei. Wie bekomme ich es hin das ich in etwa so etwas veranstalten kann:</p>
<pre><code class="language-cpp">switch( WertFuerVariable)
{
    case FullscreenX:
        FullscreenX = temp;
        break;
    case FullscreenY:
        FullscreenY = temp;
        break;
    case WindowX:
        WindowX = temp;
        break;
    // Und so weiter...
}
</code></pre>
<p>Ich müsste demnach doch aus meiner Textzeile nicht nur den Wert sondern auch den Text (%s) auslesen und in WertfuerVariable Zwischenspeichern als Grundlage für mein switch? Leider bekomme ich diesen ganzen Ansatz mal überhaupt nicht zum laufen.</p>
<p>Ich befürchte ich mach mir das Leben wieder komplizierter als es ist. <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="😞"
    /> Achso, bevor ich es vergesse, ich bin noch ziemlich blutiger Anfänger, also bitte bei eventuellen Hilfsvorschlägen: laaangsaaam und lieber eine Erklärung zu viel als eine zu wenig. Das wäre sehr nett. <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>
<p>Ich bin natürlich auch für gänzlich andere Lösungsvorschläge offen. Wie gesagt, ich bin noch neu in C++ und denke deshalb oft viel komplizierter als es eigentlich ist. <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>Gruß Daniel</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/267037/gelöst-unterschiedl-textzeilen-mit-gleichem-aufbau-quot-string-int-quot-zerlegen-und-wert-in-entspr-variablen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 17:20:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/267037.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 18 May 2010 10:31:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [gelöst] Unterschiedl. Textzeilen mit gleichem Aufbau (&amp;quot;String Int&amp;quot;) zerlegen und Wert in entspr. Variablen? on Tue, 18 May 2010 16:23:12 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich steh mal wieder vor einem mehr oder weniger kleinen Problem, aber vielleicht erstmal kurz zu dem was ich erreichen möchte. Ich habe eine Textdatei aus der ich mehrere Textzeilen Zeile für Zeile auslese mittels einer Schleife und der Inhalt wird in einem String gespeichert. Kommentare und Leerzeilen werden einfach ignoriert, die brauche ich ja nicht. Kurzes Beispiel:</p>
<pre><code>// Video Setup

FullscreenX	1680
FullscreenY	1050
WindowX		640
WindowY		480
BPP		16
Fullscreen	0
</code></pre>
<p>Nach dem ersten durchlauf meiner Schleife habe ich also als Inhalt in meinem String &quot;FullscreenX 1680&quot; stehen. Ich möchte nun diesen String, und auch alle weiteren, so bearbeiten das ich die 1680 hinterher als Wert in meiner entsprechenden Variable habe.</p>
<p>Kleines Beispiel:</p>
<pre><code class="language-cpp">int FullscreenX, FullscreenY, WindowX, WindowY, BPP;
bool Fullscreen;
// Code mit den Bedingungen für meine Schleife
{
    // die mir als Ergebnis in meinem String &quot;line&quot; eine Textzeile liefert
    sscanf( line.c_str(), &quot;FullscreenX %i&quot;, &amp;FullscreenX);
}
</code></pre>
<p>Dabei entstehen für mich nun einige Probleme. Zum einem klappt dieser Code nur für die erste Zeile. FullscreenX kann ich ja noch durch Platzhalter ersetzen, aber trotzdem speichert er den Inhalt ja immer in der gleichen Variable FullScreenX. Meine Idee wäre nun die Zahl in einer Variable z.B. int temp; zwischenzulagern und dann mittels eines switch zu überprüfen in welche Variable mein Wert muss. Leider hapert es genau dabei. Wie bekomme ich es hin das ich in etwa so etwas veranstalten kann:</p>
<pre><code class="language-cpp">switch( WertFuerVariable)
{
    case FullscreenX:
        FullscreenX = temp;
        break;
    case FullscreenY:
        FullscreenY = temp;
        break;
    case WindowX:
        WindowX = temp;
        break;
    // Und so weiter...
}
</code></pre>
<p>Ich müsste demnach doch aus meiner Textzeile nicht nur den Wert sondern auch den Text (%s) auslesen und in WertfuerVariable Zwischenspeichern als Grundlage für mein switch? Leider bekomme ich diesen ganzen Ansatz mal überhaupt nicht zum laufen.</p>
<p>Ich befürchte ich mach mir das Leben wieder komplizierter als es ist. <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="😞"
    /> Achso, bevor ich es vergesse, ich bin noch ziemlich blutiger Anfänger, also bitte bei eventuellen Hilfsvorschlägen: laaangsaaam und lieber eine Erklärung zu viel als eine zu wenig. Das wäre sehr nett. <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>
<p>Ich bin natürlich auch für gänzlich andere Lösungsvorschläge offen. Wie gesagt, ich bin noch neu in C++ und denke deshalb oft viel komplizierter als es eigentlich ist. <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>Gruß Daniel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1898902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1898902</guid><dc:creator><![CDATA[insanity]]></dc:creator><pubDate>Tue, 18 May 2010 16:23:12 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Unterschiedl. Textzeilen mit gleichem Aufbau (&amp;quot;String Int&amp;quot;) zerlegen und Wert in entspr. Variablen? on Tue, 18 May 2010 10:56:22 GMT]]></title><description><![CDATA[<p>Ja, du machst dir das Leben unnötig schwer dadurch, dass du C statt C++ programmierst. Eine spontane Idee für eine Lösung in C++ (ungefährer Code, aber so oder ähnlich geht das):</p>
<pre><code class="language-cpp">map&lt;string,int&gt; wertetabelle;
string feldname;
int wert;
while(eingabedatei&gt;&gt;feldname&gt;&gt;wert) wertetabelle.insert(pair&lt;string,int&gt;(feldname,wert));

FullscreenX = wertetabelle[&quot;FullscreenX&quot;];
FullscreenY = wertetabelle[&quot;FullscreenY&quot;];
// usw.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1898911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1898911</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 18 May 2010 10:56:22 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Unterschiedl. Textzeilen mit gleichem Aufbau (&amp;quot;String Int&amp;quot;) zerlegen und Wert in entspr. Variablen? on Tue, 18 May 2010 11:13:57 GMT]]></title><description><![CDATA[<p>Na das hört sich ja mal sehr interessant an... <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="🙂"
    /> Da muss ich mich mal einlesen. Das ist wohl auch mein größtes Problem. Dadurch das ich halt neu bin und die meisten Funktionen überhaupt nicht kenne die einem C++ bereit stellt, kann ich sie auch nicht nutzen. Zudem verwende ich immer die Referenz auf <a href="http://cplusplus.com" rel="nofollow">cplusplus.com</a>, die ist zwar gut aber leider auch auf englisch. Gibt es das nicht eventuell auch irgendwo auf deutsch? Weil das würde mir natürlich auch viele Dinge erleichtern einfach weil man sich mal viel schneller einen Überblick dadrüber machen könnte was überhaupt so geht. <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="🙂"
    /> Ich werde mich jetzt mal dran versuchen und mich später noch mal melden. Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1898914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1898914</guid><dc:creator><![CDATA[insanity]]></dc:creator><pubDate>Tue, 18 May 2010 11:13:57 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Unterschiedl. Textzeilen mit gleichem Aufbau (&amp;quot;String Int&amp;quot;) zerlegen und Wert in entspr. Variablen? on Tue, 18 May 2010 12:35:33 GMT]]></title><description><![CDATA[<p>Hey,<br />
also erst mal, ne deutsche Referenz kenn ich nicht.<br />
Aber probiers auf englisch ist besser. Wollte am anfang au immer alles in deutsch, habs dann einfach mal probiert wieder mit englisch, da es jetzt eh wieder in der schule kommt und klappt viel besser und verstehe alles=)<br />
Würd dir vll au empfehlen en gutes c++ buch zu lesen, ist einfach unersetzlich.</p>
<p>So nun zu dem Problem, schau mal in der referenz nach stringstream.<br />
Ließ jeden string einzeln ein. Der 1. Kann immer in n string bleiben, den 2. Wandelst du mittels stringstream zu einer int variable.</p>
<p>Kann dir heut abend wenn nötig auch gern den code dazu posten, weil jetzt bin ich arbeiten und hab keine zeit.<br />
Sorry.</p>
<p>Hoffe konnte dir helfen.</p>
<p>Gruß freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1898964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1898964</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Tue, 18 May 2010 12:35:33 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Unterschiedl. Textzeilen mit gleichem Aufbau (&amp;quot;String Int&amp;quot;) zerlegen und Wert in entspr. Variablen? on Tue, 18 May 2010 16:15:04 GMT]]></title><description><![CDATA[<p>So, ich hab jetzt wohl euer beide Vorschläge verwendet und rausgekommen ist da bei mir folgendes:</p>
<pre><code class="language-cpp">map&lt; string, int&gt; table; // soll meine Daten sammeln

// Bedingungen für meine Schleife welche mir...
{
    // ...jeweils 1 Textzeile aus meiner Datei als String &quot;line&quot; wiedergibt (z.B. &quot;FullscreenX 1680&quot;)

    size_t posFirst = line.find_first_of( &quot;\t&quot;); // sucht das erste vorkommen eines Tab
    size_t posLast = line.find_last_of( &quot;\t&quot;); // sucht das letzte vorkommen eines Tab

    string option = line.substr( 0, posFirst); // liefert vom ersten Zeichen des Strings bis zum ersten Tab
    string tempValue = line.substr( posLast + 1); // liefert ab dem letzten Tab bis zum letzten Zeichen des Strings

    stringstream temp;
    temp &lt;&lt; tempValue; // schreibt den Wert (string) in den stringstream
    int value;
    temp &gt;&gt; value; // liest den Wert (int) aus dem stringstream

    table.insert( pair&lt; string, int&gt;( option, value)); // füllt meine Datensammlung
}
// hier kann ich nacheinander meine Daten aus meiner Sammlung in meine Variablen schreiben (z.B. fullscreenWidth = table[&quot;FullscreenX&quot;];)
</code></pre>
<p>Das ganze funktioniert wunderbar. Wobei, kann ich eigentlich den Teil mit tempValue überspringen in dem ich line.substr() direkt in ein int schreibe? Müsste ich mal ausprobieren. Dann könnte ich mir glatt auch den Teil mit dem stringstream sparen. <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="🙂"
    /> Ich musste übrigens das erste und das letzte vorkommen von Tabs prüfen weil ich in meiner Textdatei zur Übersicht alle Werte untereinander damit positioniert habe, wodurch ich natürlich unterschiedlich viele Tabs in den Zeilen habe.</p>
<p><strong>[EDIT]</strong><br />
Es klappt zumindest so nicht:</p>
<pre><code class="language-cpp">int value = line.substr( posLast + 1);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1899132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1899132</guid><dc:creator><![CDATA[insanity]]></dc:creator><pubDate>Tue, 18 May 2010 16:15:04 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Unterschiedl. Textzeilen mit gleichem Aufbau (&amp;quot;String Int&amp;quot;) zerlegen und Wert in entspr. Variablen? on Tue, 18 May 2010 16:32:41 GMT]]></title><description><![CDATA[<p>Warum die händische Zerlegung? Schreib die Zeile in einen stringstream und mach</p>
<pre><code class="language-cpp">dein_stringstream &lt;&lt; deine_zeile;
dein_stringstream &gt;&gt; dein_string &gt;&gt; dein_int;
</code></pre>
<p>Oder falls du auch Bezeichner mit Whitespace im Namen zulassen willst, kannst du auch automatisch nach Tabulatorzeichen trennen:</p>
<pre><code class="language-cpp">dein_stringstream &lt;&lt; deine_zeile;
getline(dein_stringstream, dein_string, '\t'); // Alles bis zum ersten Tab in dein_string speichern
dein_stringstream &gt;&gt; dein_int;                 // Und den darauf folgenden int können wir direkt auslesen.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1899141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1899141</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 18 May 2010 16:32:41 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Unterschiedl. Textzeilen mit gleichem Aufbau (&amp;quot;String Int&amp;quot;) zerlegen und Wert in entspr. Variablen? on Tue, 18 May 2010 16:47:25 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Warum die händische Zerlegung?</p>
</blockquote>
<p>Weil ich keine Ahnung hab von dem was ich hier mache? <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="😃"
    /> <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="😉"
    /> Ist natürlich noch mal sehr viel kürzer und übersichtlicher. Ich zeig besser mal nicht meinen ganzen Code... Das wird dann peinlich... <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/1899150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1899150</guid><dc:creator><![CDATA[insanity]]></dc:creator><pubDate>Tue, 18 May 2010 16:47:25 GMT</pubDate></item></channel></rss>