<?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 replace...wird die größe des Strings verändert?]]></title><description><![CDATA[<p>Hallole.<br />
Mal wieder eine Anfängerfrage meinerseits.</p>
<p>Ich habe einen String indem ich ein Teil davon ersetzen will:</p>
<pre><code>std::string meinstring, ersetze;

meinstring=&quot;Hallo ich bin ein Text&quot;;
ersetze=&quot;bin ein sehr kurzer&quot;;

size_t pos;

pos=meinstring.find(&quot;bin&quot;);
meinstring.replace(pos,ersetze.length(),ersetze);
</code></pre>
<p>Funktioniert das so?<br />
Ich meine, wird der String dann automatisch länger oder überschreibt er das Ende?<br />
In meinem Fall meckert der Compiler, das was corrupted ist.</p>
<p>Wie macht man das richtig?</p>
<p>Danke Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/172031/std-string-replace-wird-die-größe-des-strings-verändert</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 16:38:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/172031.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 31 Jan 2007 18:06:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Std::string replace...wird die größe des Strings verändert? on Wed, 31 Jan 2007 18:06:12 GMT]]></title><description><![CDATA[<p>Hallole.<br />
Mal wieder eine Anfängerfrage meinerseits.</p>
<p>Ich habe einen String indem ich ein Teil davon ersetzen will:</p>
<pre><code>std::string meinstring, ersetze;

meinstring=&quot;Hallo ich bin ein Text&quot;;
ersetze=&quot;bin ein sehr kurzer&quot;;

size_t pos;

pos=meinstring.find(&quot;bin&quot;);
meinstring.replace(pos,ersetze.length(),ersetze);
</code></pre>
<p>Funktioniert das so?<br />
Ich meine, wird der String dann automatisch länger oder überschreibt er das Ende?<br />
In meinem Fall meckert der Compiler, das was corrupted ist.</p>
<p>Wie macht man das richtig?</p>
<p>Danke Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220677</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Wed, 31 Jan 2007 18:06:12 GMT</pubDate></item><item><title><![CDATA[Reply to Std::string replace...wird die größe des Strings verändert? on Wed, 31 Jan 2007 18:09:40 GMT]]></title><description><![CDATA[<p>Bei mir klappt's einwandfrei. Was für eine Meldung gibt dir dein compiler denn genau?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220679</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Wed, 31 Jan 2007 18:09:40 GMT</pubDate></item><item><title><![CDATA[Reply to Std::string replace...wird die größe des Strings verändert? on Wed, 31 Jan 2007 18:12:46 GMT]]></title><description><![CDATA[<p>Du musst bei replace nicht die Länge des Ersatzstückes angeben sondern die des zu ersetzenden. Schliesslich sollte er wissen wieviele Zeichen Du ersetzen willst. Wie lang der Ersatzstring ist findet er schon selbst raus <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/1220682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220682</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 31 Jan 2007 18:12:46 GMT</pubDate></item><item><title><![CDATA[Reply to Std::string replace...wird die größe des Strings verändert? on Wed, 31 Jan 2007 18:13:59 GMT]]></title><description><![CDATA[<blockquote>
<p>Unbehandelte Ausnahme bei 0x7c812a5b in server.exe: Microsoft C++-Ausnahme: std::out_of_range an Speicherposition 0x010ad660..</p>
</blockquote>
<p>Das ist die Meldung an der Stelle wo ich das ersetze.</p>
<p>Grüße und bis morgen (Feierabend)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220685</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Wed, 31 Jan 2007 18:13:59 GMT</pubDate></item><item><title><![CDATA[Reply to Std::string replace...wird die größe des Strings verändert? on Wed, 31 Jan 2007 18:17:20 GMT]]></title><description><![CDATA[<p>Siehe oben, Du versuchst 19 Zeichen ab &quot;bin&quot; zu ersetzen. Da sind aber nur 12.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220690</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 31 Jan 2007 18:17:20 GMT</pubDate></item><item><title><![CDATA[Reply to Std::string replace...wird die größe des Strings verändert? on Wed, 31 Jan 2007 19:41:11 GMT]]></title><description><![CDATA[<p>Ja ok, aber ich dachte, daß der string automatisch entsprechend vergrößert wird.<br />
Dem ist wohl nicht so.</p>
<p>Wie kann ich das dann korrekt, also mit vergrößerung machen?</p>
<p>grüße Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220745</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Wed, 31 Jan 2007 19:41:11 GMT</pubDate></item><item><title><![CDATA[Reply to Std::string replace...wird die größe des Strings verändert? on Wed, 31 Jan 2007 20:15:59 GMT]]></title><description><![CDATA[<p>Hmpf...</p>
<pre><code class="language-cpp">string text = &quot;Kurz&quot;;
text.replace(2, 2, &quot;uuuuuuuuurz&quot;);
</code></pre>
<p>...ersetzt das &quot;rz&quot; durch &quot;uuuuuuuurz&quot;</p>
<p>Der String <strong>wird</strong> automatisch vergrößert, aber Du musst ihm sagen wieviele Zeichen <strong>im String</strong> Du ersetzen willst und nicht wie lang der Ersatzstring ist.</p>
<p>EDIT:<br />
Kleines r bei <strong>r</strong>eplace natürlich <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/1220756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220756</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 31 Jan 2007 20:15:59 GMT</pubDate></item><item><title><![CDATA[Reply to Std::string replace...wird die größe des Strings verändert? on Wed, 31 Jan 2007 20:04:15 GMT]]></title><description><![CDATA[<p>Achsoooooo....DAS war der Fehler..werde ich morgen gleich mal testen, Vielen Dank mal, mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220763</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Wed, 31 Jan 2007 20:04:15 GMT</pubDate></item><item><title><![CDATA[Reply to Std::string replace...wird die größe des Strings verändert? on Thu, 01 Feb 2007 07:47:52 GMT]]></title><description><![CDATA[<p>Habs jetzt entsprechend geändert, doch leider ist die Meldung diesselbe.<br />
Geht nicht.<br />
Geht das nur am Ende von einem String oder auch in der Mitte eines strings?</p>
<p>Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220897</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Thu, 01 Feb 2007 07:47:52 GMT</pubDate></item><item><title><![CDATA[Reply to Std::string replace...wird die größe des Strings verändert? on Thu, 01 Feb 2007 07:53:11 GMT]]></title><description><![CDATA[<p>Mondmann schrieb:</p>
<blockquote>
<p>Habs jetzt entsprechend geändert</p>
</blockquote>
<p>Kann ja jeder behaupten <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="😃"
    /> <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>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;

int main() {
std::string meinstring, ersetze;

meinstring=&quot;Hallo ich bin ein Text&quot;;
ersetze=&quot;bin ein sehr kurzer&quot;;

size_t pos;

pos=meinstring.find(&quot;bin&quot;);
meinstring.replace(pos,7,ersetze);

std::cout &lt;&lt; meinstring &lt;&lt; std::endl;
}
</code></pre>
<p>Funktioniert bei mir einwandfrei und ist soweit ich das erkenne auch vollkommen richtig. Evtl. sollte man pos noch auf string::npos überprüfen aber in diesem Fall denke ich kann als gegeben vorausgesetzt werden, dass &quot;bin&quot; im String enthalten ist. <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/1220901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220901</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 01 Feb 2007 07:53:11 GMT</pubDate></item><item><title><![CDATA[Reply to Std::string replace...wird die größe des Strings verändert? on Thu, 01 Feb 2007 08:12:10 GMT]]></title><description><![CDATA[<p>Ok dann komm ich jetzt mit meinem Code daher, das Problem ist nämlich ein anderes.obwohl..nein eigentlich nicht..<br />
Also mein original Code:</p>
<p>Ich habe einen String indem steht zb folgendes drin:<br />
Kommentar[13][10]Neue[32]Zeile[13][10]Nochmal[32]neue[32]Zeile.\0<br />
Die Zeichen die dazwischen stehen habe ich in den eckigen KLammern.</p>
<p>Meine Aufgabe ist es nun die 2 Zeichen 13 und 10 durch das HTML Tag &quot;&lt;br&gt;&quot; zu ersetzen, also 2 Zeichen gegen die 4 Austauschen. Dabei sollte aber nichts überschrieben werden, sondern anstatt den zwei Zeichen \r\n soll nun &lt;br&gt; stehen.<br />
Also ersetzen und auseinanderschieben.<br />
Kann replace sowas?</p>
<pre><code>string br=&quot;&lt;br&gt;&quot;;
pos=str_komm.find(&quot;\r\n&quot;);
str_komm.replace(pos,2,br);//&lt;&lt;&lt;&lt;-----O.G. Fehler
</code></pre>
<p>Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220913</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Thu, 01 Feb 2007 08:12:10 GMT</pubDate></item><item><title><![CDATA[Reply to Std::string replace...wird die größe des Strings verändert? on Thu, 01 Feb 2007 08:19:49 GMT]]></title><description><![CDATA[<p>Ja das sollte so stimmen.</p>
<p>Aber ausgehend von meinem letzten Posting stelle ich mir <strong>hier</strong> die Frage ob man pos nicht vielleicht doch auf string::npos überprüfen sollte <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="😃"
    /> (sprich: Hat find überhaupt was gefunden? Wenn nicht, kann auch nichts ersetzt werden)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220916</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 01 Feb 2007 08:19:49 GMT</pubDate></item><item><title><![CDATA[Reply to Std::string replace...wird die größe des Strings verändert? on Thu, 01 Feb 2007 08:22:43 GMT]]></title><description><![CDATA[<p>Wie hast du diesen String denn eingelesen? Die Methoden der fstream's (und auch die FILE*-Funktionen) sind so clever, die Kombination &quot;\r\n&quot; zu einem einfachen &quot;\n&quot; zu verkürzen - so daß dein gesuchter Zeilenumbruch gar nicht mehr so im String stehen dürfte.</p>
<p>(zur Kontrolle: Gib den String mal zeichenweise aus und schau dir an, was übriggeblieben ist. Und wie LordJaxom schon sagte, achte auf den Rückgabewert von find())</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220917</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 01 Feb 2007 08:22:43 GMT</pubDate></item><item><title><![CDATA[Reply to Std::string replace...wird die größe des Strings verändert? on Thu, 01 Feb 2007 08:23:32 GMT]]></title><description><![CDATA[<p>STOP!<br />
Kommando zurück. Ich hab meinen Fehler!<br />
Ich prüfe ja, ob die Zeichen \r\n vorhanden sind, teste aber nicht ob sie NICHT vorhanden sind...ich denke brauche nicht weiterreden....im Falle die Zeichen sind nicht vorhanden, hat die variable pos einen bel. Wert und dann krachts....</p>
<p>Grüße Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220918</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Thu, 01 Feb 2007 08:23:32 GMT</pubDate></item><item><title><![CDATA[Reply to Std::string replace...wird die größe des Strings verändert? on Thu, 01 Feb 2007 08:26:29 GMT]]></title><description><![CDATA[<p>Mondmann schrieb:</p>
<blockquote>
<p>im Falle die Zeichen sind nicht vorhanden, hat die variable pos einen bel. Wert und dann krachts....</p>
</blockquote>
<p>Nein, beliebig ist der Wert nicht. find() gibt den definierten Wert <code>std::string::npos</code> (=(size_t)-1) zurück - und der liegt außerhalb des legalen Index-Bereiches.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220920</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 01 Feb 2007 08:26:29 GMT</pubDate></item><item><title><![CDATA[Reply to Std::string replace...wird die größe des Strings verändert? on Thu, 01 Feb 2007 09:27:37 GMT]]></title><description><![CDATA[<p>Ok alles klar.</p>
<p>Gibts auch eine Funktion, mit der man ALLE Vorkommen gleichzeitig ersetzen kann?<br />
In dem String kann das \r\n (wird übrigens nicht mit \n ersetzt) 0-20mal vorkommen und jedesmal muss ich es ersetzen.</p>
<p>Grüße Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220944</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Thu, 01 Feb 2007 09:27:37 GMT</pubDate></item><item><title><![CDATA[Reply to Std::string replace...wird die größe des Strings verändert? on Thu, 01 Feb 2007 09:30:22 GMT]]></title><description><![CDATA[<p>Im Standard gibt's das nicht, aber das kannst du leicht selber schreiben - oder du schaust in meinen Artikel &quot;Stringverarbeitung in C++&quot; (Kapitel 2.3), dort findest du eine passende Funktion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220947</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 01 Feb 2007 09:30:22 GMT</pubDate></item><item><title><![CDATA[Reply to Std::string replace...wird die größe des Strings verändert? on Thu, 01 Feb 2007 09:32:53 GMT]]></title><description><![CDATA[<p>Ok.<br />
Geschrieben habe ich das schon, hat mich nur interessiert obs da noch was &quot;fertiges&quot; gibt...<br />
Danke und Grüße Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220949</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Thu, 01 Feb 2007 09:32:53 GMT</pubDate></item></channel></rss>