<?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 -&amp;gt; Welche Logik steckt dahinter?]]></title><description><![CDATA[<p>Hali, Halo,</p>
<p>Könnt ihr mit vllt erklären wie die STL-Klasse std::string arbeitet?</p>
<p>Wird bspw. immer, wenn man etwas hinzufügt (angängt) der gesamte Speicher neuallokiert (um deren Größe) anzupassen) und die Daten kopiert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Weiterhin interessiert es mich, wie das Problem der 'NUll-Terminierung' gelößt ist ?<br />
WIrd jeweils die Länge abgespeichert?</p>
<p>Vielen dank für kommende Erklärungen <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/topic/161363/std-string-gt-welche-logik-steckt-dahinter</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 19:02:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/161363.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Oct 2006 20:44:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::string -&amp;gt; Welche Logik steckt dahinter? on Thu, 05 Oct 2006 20:44:31 GMT]]></title><description><![CDATA[<p>Hali, Halo,</p>
<p>Könnt ihr mit vllt erklären wie die STL-Klasse std::string arbeitet?</p>
<p>Wird bspw. immer, wenn man etwas hinzufügt (angängt) der gesamte Speicher neuallokiert (um deren Größe) anzupassen) und die Daten kopiert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Weiterhin interessiert es mich, wie das Problem der 'NUll-Terminierung' gelößt ist ?<br />
WIrd jeweils die Länge abgespeichert?</p>
<p>Vielen dank für kommende Erklärungen <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/1150213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150213</guid><dc:creator><![CDATA[::]]></dc:creator><pubDate>Thu, 05 Oct 2006 20:44:31 GMT</pubDate></item><item><title><![CDATA[Reply to std::string -&amp;gt; Welche Logik steckt dahinter? on Thu, 05 Oct 2006 21:12:54 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>die genaue Implementierung der STL-Container ist nicht vorgebenen, sondern nur die Schnittstellen.</p>
<p>Deshalb kann es da nur allgemeine Antworten geben</p>
<blockquote>
<p>Wird bspw. immer, wenn man etwas hinzufügt (angängt) der gesamte Speicher neuallokiert (um deren Größe) anzupassen) und die Daten kopiert</p>
</blockquote>
<p>Die Strings werden intern eine kleine Menge an Speicher vorbelegen, um kleine Änderungen so abfangen zu können. Und der Konstruktor wird natürlich sofort die benötigte Menge belegen, wenn eine Quelle übergeben wird.<br />
Außerdem wird manchmal auch Referenz-gezählt gearbeitet, wenn zwei STL-Strings kopiert werden, wird nicht gleich der Inhalt auch kopiert sondern nur bei dem Ursprung ein Referenz-zähler erhöht.</p>
<blockquote>
<p>Weiterhin interessiert es mich, wie das Problem der 'NUll-Terminierung' gelößt ist ?</p>
</blockquote>
<p>Ist intern nicht nötig denn...</p>
<blockquote>
<p>WIrd jeweils die Länge abgespeichert?</p>
</blockquote>
<p>Da der STL-String die Anzahl der Buchstaben als Eigenschaft besitzt (size), ist es anzumehmen das meistens das intern gespeichert wird, damit entfällt auch die Notwendigkeit einer NULL-Terminierung.<br />
Und das ist auch ein Grund warum auf keinen Fall direkt von STL-String auf C-String gecastet werden darf, um dann direkt die Daten dort zu lesen, geschweige denn zu schreiben.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1150224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150224</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 05 Oct 2006 21:12:54 GMT</pubDate></item><item><title><![CDATA[Reply to std::string -&amp;gt; Welche Logik steckt dahinter? on Thu, 05 Oct 2006 21:11:26 GMT]]></title><description><![CDATA[<p>Deine ganzen Fragen kann man eigentlich mit &quot;Implementierungsabhängig&quot; beantworten. Der Sourcecode zu deiner basic_string&lt;&gt;-Implementierung hast du ja, schau da rein.</p>
<p>Aber meistens dürfte es wohl so sein, das immer etwas mehr Speicher allokiert wird. So das nicht immer neuer Speicher angefordert werden muß, wenn man etwas hinzufügt. Die Länge des Strings wird sicherlich auch meistens gespeichert. Null-Terminierung haben wahrscheinlich auch die meisten Implementierungen zus. zur Länger-Speicherung mit bei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1150225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150225</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Thu, 05 Oct 2006 21:11:26 GMT</pubDate></item><item><title><![CDATA[Reply to std::string -&amp;gt; Welche Logik steckt dahinter? on Thu, 05 Oct 2006 21:53:10 GMT]]></title><description><![CDATA[<p>Hui dank euch, da wartet ja Arbeit auf mich ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1150245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1150245</guid><dc:creator><![CDATA[::]]></dc:creator><pubDate>Thu, 05 Oct 2006 21:53:10 GMT</pubDate></item></channel></rss>