<?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[Kurze Frage bezüglich string::erase()]]></title><description><![CDATA[<p>Hallo, gerade eben wollte ich folgende Zeile schreiben:</p>
<p>var ist string.</p>
<p>var.erase(var.find(';')), was eigentlich alles ab einem semikolon löschen sollte.<br />
Im Endeffekt hat das aber einen Fehler verursacht und das Programm ist abgestürzt.<br />
Ich dachte, sollte kein Semikolon enthalten sein würde einfach nichts passieren bei dieser Zeile da find(';') dann string::npos zurückgibt und die Erasefunktion somit von string::npos bis string::npos löscht.</p>
<p>Mhh, scheinbar ist dieser Fall nicht klar geregelt bei der Erasemethode.<br />
Ist das so richtig? Oder woran liegt dieser Fehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/276638/kurze-frage-bezüglich-string-erase</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 07:33:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/276638.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 06 Nov 2010 00:30:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kurze Frage bezüglich string::erase() on Sat, 06 Nov 2010 00:30:15 GMT]]></title><description><![CDATA[<p>Hallo, gerade eben wollte ich folgende Zeile schreiben:</p>
<p>var ist string.</p>
<p>var.erase(var.find(';')), was eigentlich alles ab einem semikolon löschen sollte.<br />
Im Endeffekt hat das aber einen Fehler verursacht und das Programm ist abgestürzt.<br />
Ich dachte, sollte kein Semikolon enthalten sein würde einfach nichts passieren bei dieser Zeile da find(';') dann string::npos zurückgibt und die Erasefunktion somit von string::npos bis string::npos löscht.</p>
<p>Mhh, scheinbar ist dieser Fall nicht klar geregelt bei der Erasemethode.<br />
Ist das so richtig? Oder woran liegt dieser Fehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975810</guid><dc:creator><![CDATA[kingcools2]]></dc:creator><pubDate>Sat, 06 Nov 2010 00:30:15 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage bezüglich string::erase() on Sat, 06 Nov 2010 02:20:23 GMT]]></title><description><![CDATA[<p>kingcools2 schrieb:</p>
<blockquote>
<p>und die Erasefunktion somit von string::npos bis string::npos löscht.</p>
</blockquote>
<p>So sehe ich das auch. Da aber der String nicht string::npos lang ist, kann das ja nicht funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1975825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975825</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Sat, 06 Nov 2010 02:20:23 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage bezüglich string::erase() on Sat, 06 Nov 2010 17:02:11 GMT]]></title><description><![CDATA[<p>kingcools2 schrieb:</p>
<blockquote>
<p>Ich dachte, sollte kein Semikolon enthalten sein würde einfach nichts passieren bei dieser Zeile da find(';') dann string::npos zurückgibt und die Erasefunktion somit von string::npos bis string::npos löscht.</p>
</blockquote>
<p>std::npos ist kein gültiger Indexwert und darf daher niemals mit irgend einer Stringfunktion benutzt werden. std::npos dient <strong>ausschließlich</strong> für Vergleiche, ob z.B. eine Suche erfolgreich war.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976204</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Sat, 06 Nov 2010 17:02:11 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage bezüglich string::erase() on Sat, 06 Nov 2010 17:10:00 GMT]]></title><description><![CDATA[<p>prinzipiell sollte die Klasse std::string diesen Fall abfangen können.</p>
<p>aber die Dokumentation sagt folgendes dazu:</p>
<p><a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a> schrieb:</p>
<blockquote>
<p>If the position passed is past the end of the string, an out_of_range exception is thrown.</p>
</blockquote>
<p>also pack einen try/catch-Block drum herum und mach einfach nichts...</p>
<p>-&gt;</p>
<pre><code class="language-cpp">string var(&quot;string ohne semikolon&quot;);

try {
var.erase(var.find(';'));
}
catch (const out_of_range &amp;ex) {
    // nichts machen
}
</code></pre>
<p>das sollte in etwa das machen, was du wolltest</p>
<p>MfG DrakoXP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976209</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Sat, 06 Nov 2010 17:10:00 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage bezüglich string::erase() on Sat, 06 Nov 2010 17:31:35 GMT]]></title><description><![CDATA[<blockquote>
<p>also pack einen try/catch-Block drum herum und mach einfach nichts...</p>
</blockquote>
<p>Also das würde ich nur machen, wenn das wirklich eine absolute Ausnahme ist, dass der String kein Semikolon enthält.<br />
Ansonsten kann man es doch so machen:</p>
<pre><code class="language-cpp">string a = &quot;ABC;DEF&quot;;
a.erase(find(a.begin(), a.end(), ';'), a.end());
</code></pre>
<p>Ist natürlich nicht ganz so kompakt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976223</guid><dc:creator><![CDATA[std__find]]></dc:creator><pubDate>Sat, 06 Nov 2010 17:31:35 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage bezüglich string::erase() on Sat, 06 Nov 2010 17:39:56 GMT]]></title><description><![CDATA[<p>@std__find:<br />
damit kann std::string::find immer noch std::npos zurückliefern, falls der string kein Semikolon enthält, womit die Exception trotzdem fliegt.<br />
Für die Exception reicht es bereits, wenn der erste Parameter von std::string::erase die Grenzen über-/unterschreitet.<br />
Deine Lösung bringt also effektiv gar nichts.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976234</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Sat, 06 Nov 2010 17:39:56 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage bezüglich string::erase() on Sat, 06 Nov 2010 17:55:48 GMT]]></title><description><![CDATA[<p>Schau nochmal genau hin: Ich benutze std::find, nicht std::string::find.<br />
std::find liefert einen Iterator auf das gefundene Element, ansonsten den zweiten übergebenen Iterator - hier a.end().<br />
std::string::erase kann in der Iteratorversion zwei Iteratoren entgegennehmen, und löscht dann die Elemente dazwischen.<br />
Wenn also kein Semikolon gefunden wird, steht dort am Ende:<br />
a.erase(a.end(), a.end())<br />
und es passiert rein gar nichts.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976245</guid><dc:creator><![CDATA[std__finde]]></dc:creator><pubDate>Sat, 06 Nov 2010 17:55:48 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage bezüglich string::erase() on Sat, 06 Nov 2010 18:13:28 GMT]]></title><description><![CDATA[<p>ok sry, so hast du natürlich 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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1976255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976255</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Sat, 06 Nov 2010 18:13:28 GMT</pubDate></item><item><title><![CDATA[Reply to Kurze Frage bezüglich string::erase() on Sat, 06 Nov 2010 19:35:10 GMT]]></title><description><![CDATA[<p>vielen dank an euch alle <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/1976306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1976306</guid><dc:creator><![CDATA[kingcools2]]></dc:creator><pubDate>Sat, 06 Nov 2010 19:35:10 GMT</pubDate></item></channel></rss>