<?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] Zu doof für Substr()?]]></title><description><![CDATA[<p>Hallo!<br />
Ich würde gerne aus einem String vier Daten auslesen.<br />
Beim &quot;Vornamen&quot; geht das allerdings schon schief.<br />
Hat jemand eine Ahnung, was ich falsch mache?<br />
Das Programm stürzt schon vor der ersten testausgabe ab.<br />
Vielen Dank für Eure Zeit!</p>
<pre><code class="language-cpp">//kunden.cpp
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &quot;kunden.h&quot;

void /*kartei::*/einfuegen()    {
    std::string data;
    std::cout &lt;&lt; &quot;Nachname, Vorname, Beruf, Alter: &quot;;
    std::cin &gt;&gt; data;
    kunde * neuerKunde = new kunde;

    /* Kopiere Substring mit dem Nachnamen */
    int pos = 0, len = -1;
    while(data[++len] != ',');
    neuerKunde-&gt;nachname = data.substr(0, len);

    /* Kopiere Substring mit dem Vornamen */
    pos = len + 2;                                   //pos ist jetzt der Anfang des Vornamens
    while(data[++len] != ',');
    std::cout &lt;&lt; data.substr(pos, len);
    neuerKunde-&gt;vorname = data.substr(pos, len - pos);
    std::cout &lt;&lt; neuerKunde-&gt;vorname;

    /* Kopiere Substring mit dem Beruf */
    pos = len + 1;
    while(data[++len] != ',');
    neuerKunde-&gt;beruf = data.substr(pos, len - (pos + 1));

    /* Lese Alter aus data */
    int alter = 0;
    while(data[++len]) alter = alter*10 + (data[len] - '0');
    neuerKunde-&gt;alter = alter;

    neuerKunde-&gt;next = NULL;

}
</code></pre>
<p>Die Kopie des Nachnamens funktioniert noch einwandfrei, weswegen ich bezweifle, dass es an meiner Struktur liegt, die ich deswegen nicht gepostet habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/274203/gelöst-zu-doof-für-substr</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 18:11:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/274203.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 21 Sep 2010 15:55:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [gelöst] Zu doof für Substr()? on Tue, 21 Sep 2010 17:06:59 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Ich würde gerne aus einem String vier Daten auslesen.<br />
Beim &quot;Vornamen&quot; geht das allerdings schon schief.<br />
Hat jemand eine Ahnung, was ich falsch mache?<br />
Das Programm stürzt schon vor der ersten testausgabe ab.<br />
Vielen Dank für Eure Zeit!</p>
<pre><code class="language-cpp">//kunden.cpp
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &quot;kunden.h&quot;

void /*kartei::*/einfuegen()    {
    std::string data;
    std::cout &lt;&lt; &quot;Nachname, Vorname, Beruf, Alter: &quot;;
    std::cin &gt;&gt; data;
    kunde * neuerKunde = new kunde;

    /* Kopiere Substring mit dem Nachnamen */
    int pos = 0, len = -1;
    while(data[++len] != ',');
    neuerKunde-&gt;nachname = data.substr(0, len);

    /* Kopiere Substring mit dem Vornamen */
    pos = len + 2;                                   //pos ist jetzt der Anfang des Vornamens
    while(data[++len] != ',');
    std::cout &lt;&lt; data.substr(pos, len);
    neuerKunde-&gt;vorname = data.substr(pos, len - pos);
    std::cout &lt;&lt; neuerKunde-&gt;vorname;

    /* Kopiere Substring mit dem Beruf */
    pos = len + 1;
    while(data[++len] != ',');
    neuerKunde-&gt;beruf = data.substr(pos, len - (pos + 1));

    /* Lese Alter aus data */
    int alter = 0;
    while(data[++len]) alter = alter*10 + (data[len] - '0');
    neuerKunde-&gt;alter = alter;

    neuerKunde-&gt;next = NULL;

}
</code></pre>
<p>Die Kopie des Nachnamens funktioniert noch einwandfrei, weswegen ich bezweifle, dass es an meiner Struktur liegt, die ich deswegen nicht gepostet habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955472</guid><dc:creator><![CDATA[Tonikum]]></dc:creator><pubDate>Tue, 21 Sep 2010 17:06:59 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Zu doof für Substr()? on Tue, 21 Sep 2010 15:58:20 GMT]]></title><description><![CDATA[<p>also wenn ich das richtig sehe wird in zeile 18 deines codes die position auf quasi den ersten buchstaben des vornamens gesetzt<br />
aber die position des kommas ist immer noch in length und dort suchst du erstmal weiter</p>
<p>mach einfach zu dem pos = len + 2 noch len += 2</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955474</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 21 Sep 2010 15:58:20 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Zu doof für Substr()? on Tue, 21 Sep 2010 16:08:13 GMT]]></title><description><![CDATA[<p>wow, danke für die fixe Antwort!<br />
Aber wird in Zeile 19 nicht len erst inkrementiert und dann für den Vergleich herangezogen?<br />
Leider klappt es selbst mit len += 2 nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955477</guid><dc:creator><![CDATA[Tonikum]]></dc:creator><pubDate>Tue, 21 Sep 2010 16:08:13 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Zu doof für Substr()? on Tue, 21 Sep 2010 16:47:08 GMT]]></title><description><![CDATA[<p>komische konstruktion mit len und pos in deinem Code.<br />
Enthält der Daten-String &quot;data&quot; den auch den entsprechenden Text? Mal debuggen oder auf der konsole ausgeben lassen.</p>
<p>Sonst gilt es mit dem Debugger durchsteppen und &quot;pos&quot; und &quot;len&quot; überwachen, ob alles wie gedacht läuft.</p>
<p>und schau dir bei gelegenheit evtl mal das beispiel hier an:<br />
<a href="http://www.cplusplus.com/reference/string/string/find/" rel="nofollow">http://www.cplusplus.com/reference/string/string/find/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955500</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Tue, 21 Sep 2010 16:47:08 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Zu doof für Substr()? on Tue, 21 Sep 2010 16:55:23 GMT]]></title><description><![CDATA[<p>Inwiefern komisch?<br />
Wie kann ich denn find() für meine Zwecke nutzen? Ich weiß ja noch nicht, wie die Daten im Einzelnen aussehen.<br />
Das mit dem Debugger hab ich gemacht: len läuft mir bei dem zweiten Aufruf über das Stringende hinaus, obwohl ich die Daten in der Form &quot;Mustermann, Max, Elektriker, 36&quot; eingegeben habe. Das verstehe ich nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955506</guid><dc:creator><![CDATA[Tonikum]]></dc:creator><pubDate>Tue, 21 Sep 2010 16:55:23 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Zu doof für Substr()? on Tue, 21 Sep 2010 17:06:33 GMT]]></title><description><![CDATA[<p>Oh, hab's entdeckt.<br />
Über cin &gt;&gt; wird bei dem ersten Leerzeichen abgebrochen, das wusste ich nicht mehr.<br />
Danke für eure Mühen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955509</guid><dc:creator><![CDATA[Tonikum]]></dc:creator><pubDate>Tue, 21 Sep 2010 17:06:33 GMT</pubDate></item></channel></rss>