<?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[std::string : suche nur einen bestimmten bereicht begrenzen]]></title><description><![CDATA[<p>ich versuche in einer schleife immer zum nächsten eintrag innerhalb eines strings zu springen (das vor dem eintrag an sich ist bekannt z.b. &quot;kundennummer:&quot;). dannach suche ich die position hinter dem eintrag und mittels str.substr(pos1, pos2-pos1) hab ich dann den eintrag selbst. allerdings wird die abbruchbedingung der schleife nie erfüllt da bei str.find() wenn eigentlich kein eitrag mehr kommen sollte immer wieder zum allerersten gesprungen wird. wie kann ich das vermeiden, bzw. die range in der gesucht wird einschränken sodass am sich die position immer mehr an die allerletzte annähert. am ende wird dann zwischen pos1 und endpos gesucht wobei die mittlerweile so nah anneinandergerückt sind das man da nix mehr finden wird.</p>
<p>vielen dank schonmal</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/176357/std-string-suche-nur-einen-bestimmten-bereicht-begrenzen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 13:26:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/176357.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 20 Mar 2007 14:25:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::string : suche nur einen bestimmten bereicht begrenzen on Tue, 20 Mar 2007 14:25:10 GMT]]></title><description><![CDATA[<p>ich versuche in einer schleife immer zum nächsten eintrag innerhalb eines strings zu springen (das vor dem eintrag an sich ist bekannt z.b. &quot;kundennummer:&quot;). dannach suche ich die position hinter dem eintrag und mittels str.substr(pos1, pos2-pos1) hab ich dann den eintrag selbst. allerdings wird die abbruchbedingung der schleife nie erfüllt da bei str.find() wenn eigentlich kein eitrag mehr kommen sollte immer wieder zum allerersten gesprungen wird. wie kann ich das vermeiden, bzw. die range in der gesucht wird einschränken sodass am sich die position immer mehr an die allerletzte annähert. am ende wird dann zwischen pos1 und endpos gesucht wobei die mittlerweile so nah anneinandergerückt sind das man da nix mehr finden wird.</p>
<p>vielen dank schonmal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1249147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1249147</guid><dc:creator><![CDATA[Anfänger_braucht _hilfe]]></dc:creator><pubDate>Tue, 20 Mar 2007 14:25:10 GMT</pubDate></item><item><title><![CDATA[Reply to std::string : suche nur einen bestimmten bereicht begrenzen on Tue, 20 Mar 2007 14:29:19 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Wenn ich deinen wirren Text richtig verstanden habe, solltest du dir mal die zusätzlichen Parameter von <a href="http://www.cppreference.com/cppstring/find.html" rel="nofollow">std::string::find</a> anschauen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1249151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1249151</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 20 Mar 2007 14:29:19 GMT</pubDate></item><item><title><![CDATA[Reply to std::string : suche nur einen bestimmten bereicht begrenzen on Tue, 20 Mar 2007 14:59:44 GMT]]></title><description><![CDATA[<p>Anfänger_braucht _hilfe schrieb:</p>
<blockquote>
<p>ich versuche in einer schleife immer zum nächsten eintrag innerhalb eines strings zu springen (das vor dem eintrag an sich ist bekannt z.b. &quot;kundennummer:&quot;). dannach suche ich die position hinter dem eintrag und mittels str.substr(pos1, pos2-pos1) hab ich dann den eintrag selbst. allerdings wird die abbruchbedingung der schleife nie erfüllt da bei str.find() wenn eigentlich kein eitrag mehr kommen sollte immer wieder zum allerersten gesprungen wird. wie kann ich das vermeiden, bzw. die range in der gesucht wird einschränken sodass am sich die position immer mehr an die allerletzte annähert. am ende wird dann zwischen pos1 und endpos gesucht wobei die mittlerweile so nah anneinandergerückt sind das man da nix mehr finden wird.</p>
<p>vielen dank schonmal</p>
</blockquote>
<p>*semantic underflow error*<br />
Vielleicht kann ich dazu was Hilfreiches beitragen, wenn Du den Text so strukturierst, dass es leichter ist, ihn zu entziffern, als das Problem zu lösen. Tipp: Groß/Kleinschreibung, Satzzeichen, Satzstruktur, Absätze.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1249172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1249172</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 20 Mar 2007 14:59:44 GMT</pubDate></item><item><title><![CDATA[Reply to std::string : suche nur einen bestimmten bereicht begrenzen on Tue, 20 Mar 2007 15:29:18 GMT]]></title><description><![CDATA[<p>Okay der String sieht beispw. so aus:</p>
<pre><code class="language-cpp">std::string str(&quot;kn:12345 kn:12346 kn:12347 ...&quot;);//kn=kundennummer
</code></pre>
<p>per</p>
<pre><code class="language-cpp">int pos=0;
pos=str.find(&quot;kn:&quot;,pos)+std::strlen(&quot;kn:&quot;);
</code></pre>
<p>springe ich dann immer zu der jeweiligen nummer. die nummer an sich erhalte ich dann mittels</p>
<pre><code class="language-cpp">str.substr(pos, str.find(' ', pos)-pos);
</code></pre>
<p>(wobei er space als trennzeichen nicht kennt, bei mir steht da ein '\&quot;' aber das ist ein anderes problem). angenommen die länge der kn ist immer 5 dann könnte man die sich ja der reihe nach mit einer schleife ausgeben lassen. wenn allerdings die letzte kn erreicht wurde wird komischerweise immer wieder zu ersten gesprungen. wie kann man das vermeiden? (oder eine andere möglichkeit: wie kann man den suchbereich einschränken? also:)</p>
<pre><code class="language-cpp">std::string::find(const char* s, size_t pos1, size_t pos2);
</code></pre>
<p>so irgendwie sollte das dann aussehen</p>
<p>ich hoffe das hat die sache etwas klarer gemacht <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/1249188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1249188</guid><dc:creator><![CDATA[Anfänger_braucht _hilfe]]></dc:creator><pubDate>Tue, 20 Mar 2007 15:29:18 GMT</pubDate></item><item><title><![CDATA[Reply to std::string : suche nur einen bestimmten bereicht begrenzen on Tue, 20 Mar 2007 15:34:55 GMT]]></title><description><![CDATA[<p>und so etwas ähnliches gibt es ja auch, wie in akaris Link zu sehen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1249195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1249195</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 20 Mar 2007 15:34:55 GMT</pubDate></item><item><title><![CDATA[Reply to std::string : suche nur einen bestimmten bereicht begrenzen on Tue, 20 Mar 2007 15:58:32 GMT]]></title><description><![CDATA[<p>ich glaub ich hab das problem selbst gefunden: an der schleife war was faul, und zwar konnte die variable pos einen bestimmten wert garnicht überschreiten, da wenn nichts gefunden wurde pos==std::string::npos==-1 war. also konnte die schleife wieder von vorn beginnen.</p>
<p>@ Braunstein: die 4 versionen von std::string::find waren mir bekannt allerdings bezieht sich doch der 3 paramter (lengh) der einen Methode auf den C-string und nicht etwa auf *this oder doch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1249218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1249218</guid><dc:creator><![CDATA[Anfänger_braucht _hilfe]]></dc:creator><pubDate>Tue, 20 Mar 2007 15:58:32 GMT</pubDate></item><item><title><![CDATA[Reply to std::string : suche nur einen bestimmten bereicht begrenzen on Tue, 20 Mar 2007 16:01:29 GMT]]></title><description><![CDATA[<p>Anfänger_braucht _hilfe schrieb:</p>
<blockquote>
<p>@ Braunstein: die 4 versionen von std::string::find waren mir bekannt allerdings bezieht sich doch der 3 paramter (lengh) der einen Methode auf den C-string und nicht etwa auf *this oder doch?</p>
</blockquote>
<p>Falls Du mit &quot;dem C-string&quot; das Suchwort meinst, dessen Länge kann die Standardbibliothek prima selbst ermitteln <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/1249222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1249222</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 20 Mar 2007 16:01:29 GMT</pubDate></item><item><title><![CDATA[Reply to std::string : suche nur einen bestimmten bereicht begrenzen on Tue, 20 Mar 2007 17:04:58 GMT]]></title><description><![CDATA[<p>Der Anfänger hat Recht. <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 length bezieht sich auf die Länge des zu suchenden strings. Die von akari verlinkte Erläuterung habe ich irgendwie anders verstanden aber im Josuttis sowie im Standard selbst steht es natürlich richtig. Im Josuttis steht noch</p>
<blockquote>
<p>Note that chars must have at least chars_len characters. ...</p>
</blockquote>
<p>und imStandard steht noch folgendes zu dieser Variante von find</p>
<blockquote>
<p>Returns: find(basic_string&lt;charT,traits,Allocator&gt;(s,n),pos</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1249260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1249260</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 20 Mar 2007 17:04:58 GMT</pubDate></item></channel></rss>