<?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[Problem bei String-Verarbeitung]]></title><description><![CDATA[<p>Hallo erstmal,<br />
da dies mein erster Beitrag hier ist hoffe ich einfach mal, dass ich mit meinem Problem hier in dem richtigen Forum bin. Und zwar befinde ich mich gerade in der Klausurvorbereitung für Informatik und habe ziemliche Probleme mit einer Aufgabe.</p>
<p>Und zwar sollen wir einen Funktionsprototypen schreiben, der 3 Strings als Parameter übergeben bekommt, den ersten String (str1) nach dem zweiten (str2) durchsucht und dann den dritten (str3) hinter dem zweiten einfügt.</p>
<p>Ich habe mir natürlich auch Gedanken dazu gemacht und meine Lösungsidee sieht wie folgt aus:</p>
<pre><code class="language-cpp">void tauschen (string str1, string str2, string str3)
{
   string::size_type pos =-1;

   do
   {
      pos++;
      pos = str1.find(str2, pos) + str2.size();
      str1.insert(pos,str3);
   }
   while (pos!=string::npos);

}
</code></pre>
<p>Das Problem ist nun, dass wenn ich das ganze ausprobiere (mit Visual Studio 2005) die Konsole sich zwar öffnet und keine Fehler angezeigt werden, aber mit Ausnahme eines blinkenden &quot;_&quot; passiert nichts weiter. Ich vermute also, dass er in der Schleife feststeckt, habe aber ehrlich gesagt keine Ahnung warum. Ein ähnlicher Ansatz mit einer For-Schleife und replace-Funktion hat leider den gleichen Fehler gehabt.</p>
<p>Ich würd mich sehr freuen, falls jemand eventuell Ideen hat woran es liegen könnte.<br />
Vielen Dank schon mal für die Hilfe <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/topic/274174/problem-bei-string-verarbeitung</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 19:04:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/274174.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 21 Sep 2010 09:18:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem bei String-Verarbeitung on Tue, 21 Sep 2010 09:18:05 GMT]]></title><description><![CDATA[<p>Hallo erstmal,<br />
da dies mein erster Beitrag hier ist hoffe ich einfach mal, dass ich mit meinem Problem hier in dem richtigen Forum bin. Und zwar befinde ich mich gerade in der Klausurvorbereitung für Informatik und habe ziemliche Probleme mit einer Aufgabe.</p>
<p>Und zwar sollen wir einen Funktionsprototypen schreiben, der 3 Strings als Parameter übergeben bekommt, den ersten String (str1) nach dem zweiten (str2) durchsucht und dann den dritten (str3) hinter dem zweiten einfügt.</p>
<p>Ich habe mir natürlich auch Gedanken dazu gemacht und meine Lösungsidee sieht wie folgt aus:</p>
<pre><code class="language-cpp">void tauschen (string str1, string str2, string str3)
{
   string::size_type pos =-1;

   do
   {
      pos++;
      pos = str1.find(str2, pos) + str2.size();
      str1.insert(pos,str3);
   }
   while (pos!=string::npos);

}
</code></pre>
<p>Das Problem ist nun, dass wenn ich das ganze ausprobiere (mit Visual Studio 2005) die Konsole sich zwar öffnet und keine Fehler angezeigt werden, aber mit Ausnahme eines blinkenden &quot;_&quot; passiert nichts weiter. Ich vermute also, dass er in der Schleife feststeckt, habe aber ehrlich gesagt keine Ahnung warum. Ein ähnlicher Ansatz mit einer For-Schleife und replace-Funktion hat leider den gleichen Fehler gehabt.</p>
<p>Ich würd mich sehr freuen, falls jemand eventuell Ideen hat woran es liegen könnte.<br />
Vielen Dank schon mal für die Hilfe <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/1955211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955211</guid><dc:creator><![CDATA[localboy]]></dc:creator><pubDate>Tue, 21 Sep 2010 09:18:05 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei String-Verarbeitung on Tue, 21 Sep 2010 09:59:26 GMT]]></title><description><![CDATA[<p>Der Fehler ist, daß du in der Variablen 'pos' schon gleich den Index des Endes speicherst, d.h. die while-Bedingung nicht erfüllt wird (falls string::find den String nicht mehr findet und string::npos zurückliefert).</p>
<p>Besser daher so:</p>
<pre><code class="language-cpp">void tauschen (string str1, string str2, string str3)
{
   string::size_type pos = 0;

   while((pos = str1.find(str2, pos) != string::npos)
   {
      pos += str2.size();
      str1.insert(pos, str3);
      pos += str3.size(); // &lt;- zusätzlich noch pos um die Länge von str3 vergrößern,
                          // damit nicht innerhalb von str3 weitergesucht wird
   }
}
</code></pre>
<p>(evtl. out-of-index Fehler habe ich hierbei noch nicht berücksichtigt!)</p>
<p>Du mußt jedoch bedenken, daß du bisher nur lokal den ersten String veränderst, d.h. entweder den neuen String als Rückgabe oder aber &quot;string &amp;&quot; als Parameter verwenden (und für die anderen Parameter könntest du &quot;const string &amp;&quot; nehmen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955252</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Tue, 21 Sep 2010 09:59:26 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei String-Verarbeitung on Tue, 21 Sep 2010 11:43:31 GMT]]></title><description><![CDATA[<p>Vielen Dank für die schnelle Hilfe! <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="🙂"
    /><br />
Das ganze macht natürlich Sinn so wie du es erklärt hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955319</guid><dc:creator><![CDATA[localboy]]></dc:creator><pubDate>Tue, 21 Sep 2010 11:43:31 GMT</pubDate></item></channel></rss>