<?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 mit string.find()]]></title><description><![CDATA[<p>Also: mein Ziel ist es einfach alle &quot;_&quot; in einem String durch &quot; &quot; zu ersetzen. Das sieht bisher folgendermaßen aus:</p>
<pre><code class="language-cpp">using namespace std;

string STRING_CONVERT(string SHIFT_STRING)
{
  /* Der zu bearbeitende String (SHIFT_STRING) wird dem Puffer (SHIFT_FREE)
     übegeben */
  string SHIFT_FREE = SHIFT_STRING;

  repeat:

  /* STRING_RESULT ist der Endwert, der unten auch per return übergeben wird.
     Ihm wird zunächst der Pufferwert übergeben */
  string STRING_RESULT = SHIFT_FREE;

  //Jetzt soll im Puffer nach &quot;_&quot; gesucht werden.
  int SHIFT_POS = SHIFT_FREE.find(&quot;_&quot;, 0);

  //&quot;Wenn &quot;_&quot; gefunden wurde, soll nun durch &quot; &quot; ersetzt werden
  if(SHIFT_POS != 0)
  {
    SHIFT_FREE = SHIFT_FREE.replace(SHIFT_POS, 1, &quot; &quot;);
    /* Weil mehrere &quot;_&quot; auftauchen können und STRING_RESULT aktualisiert
       werden muss wird der Vorgang wiederholt */
    goto repeat;
  }

  return STRING_RESULT;
};
</code></pre>
<p>Bisheriges Ergebnis: Keine Compiler-Fehler. ABER das Programm &quot;stürtzt ab&quot;.<br />
Wieso in Anführungszeichen? Naja ... für mich sieht das so aus als würde er eine Menge einfach überspringen. Nach nicht definiertem Verhalten sieht es weniger aus <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>
<p>2. Ich vermute, dass die if-Bedingung Probleme bereitet. Deshalb auch um auf den Topic zurück zu kommen: Welchen Ergebniswert liefert string.find() zurück wenn der Gesuchte Substring nicht gefunden wurde?</p>
<p>3. Oder hab ich sonst irgendwas falsch gemacht?</p>
<p>EDIT: sry ich habs jetzt selbst gelöst <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="🙂"
    /> man man quasi just in dem Moment als ichs poste <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="😃"
    /> sry nochmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183749/problem-mit-string-find</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 12:10:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183749.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 08 Jun 2007 13:06:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit string.find() on Fri, 08 Jun 2007 13:28:18 GMT]]></title><description><![CDATA[<p>Also: mein Ziel ist es einfach alle &quot;_&quot; in einem String durch &quot; &quot; zu ersetzen. Das sieht bisher folgendermaßen aus:</p>
<pre><code class="language-cpp">using namespace std;

string STRING_CONVERT(string SHIFT_STRING)
{
  /* Der zu bearbeitende String (SHIFT_STRING) wird dem Puffer (SHIFT_FREE)
     übegeben */
  string SHIFT_FREE = SHIFT_STRING;

  repeat:

  /* STRING_RESULT ist der Endwert, der unten auch per return übergeben wird.
     Ihm wird zunächst der Pufferwert übergeben */
  string STRING_RESULT = SHIFT_FREE;

  //Jetzt soll im Puffer nach &quot;_&quot; gesucht werden.
  int SHIFT_POS = SHIFT_FREE.find(&quot;_&quot;, 0);

  //&quot;Wenn &quot;_&quot; gefunden wurde, soll nun durch &quot; &quot; ersetzt werden
  if(SHIFT_POS != 0)
  {
    SHIFT_FREE = SHIFT_FREE.replace(SHIFT_POS, 1, &quot; &quot;);
    /* Weil mehrere &quot;_&quot; auftauchen können und STRING_RESULT aktualisiert
       werden muss wird der Vorgang wiederholt */
    goto repeat;
  }

  return STRING_RESULT;
};
</code></pre>
<p>Bisheriges Ergebnis: Keine Compiler-Fehler. ABER das Programm &quot;stürtzt ab&quot;.<br />
Wieso in Anführungszeichen? Naja ... für mich sieht das so aus als würde er eine Menge einfach überspringen. Nach nicht definiertem Verhalten sieht es weniger aus <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>
<p>2. Ich vermute, dass die if-Bedingung Probleme bereitet. Deshalb auch um auf den Topic zurück zu kommen: Welchen Ergebniswert liefert string.find() zurück wenn der Gesuchte Substring nicht gefunden wurde?</p>
<p>3. Oder hab ich sonst irgendwas falsch gemacht?</p>
<p>EDIT: sry ich habs jetzt selbst gelöst <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="🙂"
    /> man man quasi just in dem Moment als ichs poste <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="😃"
    /> sry nochmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1301335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1301335</guid><dc:creator><![CDATA[supern0va]]></dc:creator><pubDate>Fri, 08 Jun 2007 13:28:18 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit string.find() on Fri, 08 Jun 2007 13:28:21 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>1.) find() liefer bei nicht gefunden string::npos<br />
2.) meide goto und mach ne schöne Schleife <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="😉"
    /><br />
3.) die Funktion kann ein Einzeiler mit std::replace (alogrithm) sein <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1301347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1301347</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 08 Jun 2007 13:28:21 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit string.find() on Fri, 08 Jun 2007 13:29:53 GMT]]></title><description><![CDATA[<p>Erstmal liefert find einen unsigned (size_t) Wert zurück. Dieser ist dann mit der Konstanten std::string::npos zu vergleichen. Ist der Rückgabewert gleich dieser Konstanten wurde der gesuchte String nicht gefunden.</p>
<p>Außerdem solltest du das goto, durch eine while-Schleife ersetzen. <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="😉"
    /></p>
<p>Greetz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1301348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1301348</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Fri, 08 Jun 2007 13:29:53 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit string.find() on Fri, 08 Jun 2007 14:01:10 GMT]]></title><description><![CDATA[<p>Mach ich gerne aber im Moment habe ich ein ganz anderes Problem <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>Das ist der Code der die oben gezeigte Funktion (die jetzt wie gesagt funktioniert) verwendet:</p>
<pre><code class="language-cpp">#include &quot;convert.h&quot;
using namespace std;

void practise(string DETECT_DATASET)
{
  cout &lt;&lt; &quot;  Enter dr\x81 \bcken um neue Frage aufzurufen  &quot; &lt;&lt; endl;
  cout &lt;&lt; endl;

  int TERMINATE_LOOP;

  while(TERMINATE_LOOP != 1)
  {
    ifstream QUESTION_FILE(DETECT_DATASET.c_str(), ios_base::out);

    if(!QUESTION_FILE)
    {
      cout &lt;&lt; DETECT_DATASET &lt;&lt; &quot; konnte nicht geladen werden.  Die Datei fehlt/ ist besch\x84 \bdigt. &quot; &lt;&lt; endl;

      getch();

      return;
    }

    int QUESTION_NUMBER;
    int QUESTION_DATASET; 
    int QUESTION_LOOP;

    string STATE_NAME;
    string STATE_CITY;
    string USER_REPLY;

    QUESTION_FILE &gt;&gt; QUESTION_NUMBER;

    srand( (unsigned)time( NULL ) );
    QUESTION_DATASET = rand() % QUESTION_NUMBER + 1;

    QUESTION_LOOP = 2 * QUESTION_DATASET;
    while(QUESTION_LOOP &gt;= 2)
    {
      QUESTION_FILE &gt;&gt; STATE_NAME &gt;&gt; STATE_CITY;
      QUESTION_LOOP -= 2;
    }

    STATE_NAME = STRING_CONVERT(STATE_NAME);
    STATE_CITY = STRING_CONVERT(STATE_CITY);

    cout &lt;&lt; &quot;  Wie hei\xE1 \bt die Hauptstadt von/der &quot; &lt;&lt; STATE_NAME &lt;&lt; &quot;?&quot; &lt;&lt; endl;
    cout &lt;&lt; endl; 
    cout &lt;&lt; &quot;  Antwort:  &quot;;

    cin  &gt;&gt; USER_REPLY;

    cout &lt;&lt; endl; 
    cout &lt;&lt; endl;
    cout &lt;&lt; &quot;  Die Antwort ist .... &quot;;

    if (USER_REPLY == STATE_CITY)
    {
      cout &lt;&lt; &quot;  Richtig!  &quot; &lt;&lt; endl;
    }
    else if (USER_REPLY == &quot;exit&quot;)
    {
      TERMINATE_LOOP = 1;
    }
    else
    {
      cout &lt;&lt; &quot;  Falsch!  &quot; &lt;&lt; endl;
      cout &lt;&lt; endl;
      cout &lt;&lt; &quot;  Die richtige Antwort ist: &quot; &lt;&lt; STATE_CITY &lt;&lt; endl;
    }

    getch();

    clrscr();

    QUESTION_FILE.close();
  }
};
</code></pre>
<p>Problem: Bei allen Strings die duch die Funktion verändert werden, gibt das Programm trotz richtiger Antwort &quot;Falsch&quot; aus. Woran kann das liegen? Also dort wo kein underscore entfernt wird geht's <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> .</p>
<p>Das sieht dann folgendermaßen aus:</p>
<p>verändert: <a href="http://www.host2k.de/User/karpfenteich/bad.JPG" rel="nofollow">http://www.host2k.de/User/karpfenteich/bad.JPG</a><br />
nicht verändert: <a href="http://www.host2k.de/User/karpfenteich/good.JPG" rel="nofollow">http://www.host2k.de/User/karpfenteich/good.JPG</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1301356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1301356</guid><dc:creator><![CDATA[supern0va]]></dc:creator><pubDate>Fri, 08 Jun 2007 14:01:10 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit string.find() on Fri, 08 Jun 2007 20:12:49 GMT]]></title><description><![CDATA[<p>cin &gt;&gt; liest nur bis zum ersten Leerzeichen ein.<br />
verwende:</p>
<pre><code class="language-cpp">std::getline(std::cin, USER_REPLY);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1301648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1301648</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Fri, 08 Jun 2007 20:12:49 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit string.find() on Fri, 08 Jun 2007 20:17:00 GMT]]></title><description><![CDATA[<p>Und warum nicht mit std::replace?</p>
<pre><code class="language-cpp">void string_convert(std::string&amp; string)
{
    std::replace(string.begin(), string.end(), &quot;_&quot;, &quot;&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1301654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1301654</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Fri, 08 Jun 2007 20:17:00 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit string.find() on Sat, 09 Jun 2007 05:36:37 GMT]]></title><description><![CDATA[<blockquote>
<p>3.) die Funktion kann ein Einzeiler mit std::replace (alogrithm) sein <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="😉"
    /></p>
</blockquote>
<p>Man muss replace aber in einer Schleife aufrufen, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1301762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1301762</guid><dc:creator><![CDATA[hmmmmmmmm]]></dc:creator><pubDate>Sat, 09 Jun 2007 05:36:37 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit string.find() on Sat, 09 Jun 2007 05:53:41 GMT]]></title><description><![CDATA[<p>ah es geht doch mit einem aufruf von std::replace in diesem fall. damit kann man aber nur einzelne buchstaben ersetzen. devils code ist falsch es muss '_', '' heissen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1301766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1301766</guid><dc:creator><![CDATA[hmmmmmmmm]]></dc:creator><pubDate>Sat, 09 Jun 2007 05:53:41 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit string.find() on Sun, 10 Jun 2007 13:12:47 GMT]]></title><description><![CDATA[<p>ok vielen Dank ich probier's gleich mal aus <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>EDIT: hmmm mein Compiler (Borland 5.5) sagt &quot;undefined function&quot; wenn er auf replace trifft. Muss ich da noch eine Headerdatei einbinden oder gehört die Funktion zu &lt;string&gt;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302409</guid><dc:creator><![CDATA[supern0va]]></dc:creator><pubDate>Sun, 10 Jun 2007 13:12:47 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit string.find() on Sun, 10 Jun 2007 13:34:37 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;algorithm&gt;

...

std::replace(string.begin(), string.end(), '_', '')
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1302459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302459</guid><dc:creator><![CDATA[Helium]]></dc:creator><pubDate>Sun, 10 Jun 2007 13:34:37 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit string.find() on Mon, 11 Jun 2007 10:26:11 GMT]]></title><description><![CDATA[<p>OK es funktioniert jetzt soweit. Danke an alle die sich an der Lösung beteiligt haben.</p>
<p>EDIT: Jetzt hab ich blöderweise doch noch ein Problem festgestellt <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="😃"
    /> . Wenn ich getline() einsetze findet im ersten Schleifendurchlauf keine Eingabe statt. Soll heißen die Eingabe wird beim ersten Mal übersprungen und wird erst im zweiten durchgang aktiv. Was kann man da machen?</p>
<p>EDIT (die 2.) ^^: Ich bin jetzt selber noch auf die Funktion cin.ignore gestoßen aber ich wollte wissen ob es nicht doch noch eine Alternative gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302745</guid><dc:creator><![CDATA[supern0va]]></dc:creator><pubDate>Mon, 11 Jun 2007 10:26:11 GMT</pubDate></item></channel></rss>