<?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[STL String sizeof]]></title><description><![CDATA[<p>Hallo,</p>
<p>sizeof liefert in folgendem Falle 4 Byte:</p>
<p>string s;<br />
sizeof(s);</p>
<p>Da war ich verwundert, weil in meinem naiven Weltbild sah die Sache so aus:<br />
sizeof liefert die Größe von einem Zeichen. Somit hätte ich gedacht, dass ich bei sizeof(string) 1 Byte erhalte, und bei sizeof(stringw) 4 Byte.</p>
<p>Warum sizeof(string) 4 Byte liefert, verstehe ich aber nicht.<br />
Selbst sizeof(basic_string&lt;char&gt;) liefert 4 Byte.</p>
<p>Kann mir das jmd. erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/212615/stl-string-sizeof</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 17:24:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/212615.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 May 2008 13:52:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to STL String sizeof on Thu, 08 May 2008 13:52:37 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>sizeof liefert in folgendem Falle 4 Byte:</p>
<p>string s;<br />
sizeof(s);</p>
<p>Da war ich verwundert, weil in meinem naiven Weltbild sah die Sache so aus:<br />
sizeof liefert die Größe von einem Zeichen. Somit hätte ich gedacht, dass ich bei sizeof(string) 1 Byte erhalte, und bei sizeof(stringw) 4 Byte.</p>
<p>Warum sizeof(string) 4 Byte liefert, verstehe ich aber nicht.<br />
Selbst sizeof(basic_string&lt;char&gt;) liefert 4 Byte.</p>
<p>Kann mir das jmd. erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505450</guid><dc:creator><![CDATA[StringDoktor]]></dc:creator><pubDate>Thu, 08 May 2008 13:52:37 GMT</pubDate></item><item><title><![CDATA[Reply to STL String sizeof on Thu, 08 May 2008 13:56:56 GMT]]></title><description><![CDATA[<p>StringDoktor schrieb:</p>
<blockquote>
<p>Da war ich verwundert, weil in meinem naiven Weltbild sah die Sache so aus:<br />
sizeof liefert die Größe von einem Zeichen.</p>
</blockquote>
<p>Nein, sizeof liefert die Größe des Typs. Und je nach Implementierung kann dies unterschiedlich sein. Denk bitte daran das string (bzw. basic_string&lt;char&gt;) eine Klasse ist, und nicht einfach ein char (bzw. char*).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505456</guid><dc:creator><![CDATA[asc@ausgeloggt]]></dc:creator><pubDate>Thu, 08 May 2008 13:56:56 GMT</pubDate></item><item><title><![CDATA[Reply to STL String sizeof on Thu, 08 May 2008 14:04:21 GMT]]></title><description><![CDATA[<p>Ok danke, was mich aber noch gewundert hat:<br />
Theoretisch müsste string, oder basic_string&lt;char&gt; pro Zeichen nur ein Byte verwenden, womit 255 verschiedene Zeichen möglich wären.<br />
wstring speichert ja dagegen 32-Bit-Werte und ist somit brauchbar für Unicode-Zeichen.</p>
<p>In einem kleinen Beispiel habe ich von der Konsole einen Wert eingelesen und in einem normalen String gespeichert:</p>
<pre><code>string s;
   cin &gt;&gt; s;
   cout &lt;&lt; s;
</code></pre>
<p>Beim Ausführen habe ich nun mehrere kyrillische Zeichen, das Währungszeichen für den Euro und ein paar deutsche Umlaute und Buchstaben eingegeben, mit der Annahme, dass der string einige Werte nicht korrekt speichern wird (da nur 255 Zeichenmöglichkeiten bei Byte), und die Buchstaben je nach eingestellter Codepage in der Konsole verfälscht werden würden.<br />
Zu meinem Erstaunen hat meine Linux-Konsole jedoch alle Zeichen wieder korrekt ausgegeben.<br />
Okay, ich habe zwar eine Unicode-Konsole eingestellt, aber dennoch dürften die Zeichenwerte in einem einfachen string ja garnicht erst alle Platz finden, oder irre ich mich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505462</guid><dc:creator><![CDATA[StringDoktor]]></dc:creator><pubDate>Thu, 08 May 2008 14:04:21 GMT</pubDate></item><item><title><![CDATA[Reply to STL String sizeof on Thu, 08 May 2008 14:06:31 GMT]]></title><description><![CDATA[<p>UTF-8?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505464</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 08 May 2008 14:06:31 GMT</pubDate></item><item><title><![CDATA[Reply to STL String sizeof on Thu, 08 May 2008 14:07:17 GMT]]></title><description><![CDATA[<p>Vergleiche die Länge des Strings mit der Anzahl der Zeichen die du eingegeben hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505467</guid><dc:creator><![CDATA[Stringerclub]]></dc:creator><pubDate>Thu, 08 May 2008 14:07:17 GMT</pubDate></item><item><title><![CDATA[Reply to STL String sizeof on Thu, 08 May 2008 14:15:59 GMT]]></title><description><![CDATA[<p>Eingegeben: 11 Zeichen<br />
.size() liefert: 21 Zeichen</p>
<p>Achsoo, jetzt verstehe ich das glaube ich: Er kann zwar sehr wohl die Unicode-Zeichen korrekt einspeichern, aber die vorhandenen string-Funktionen können nicht richtig damit umgehen, stimmt das?</p>
<p>Also wäre das Unicode-Problem mit wstring im Prinzip behoben, abgesehen von der Tatsache, dass 4 Byte pro Zeichen verbraten werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505472</guid><dc:creator><![CDATA[StringDoktor]]></dc:creator><pubDate>Thu, 08 May 2008 14:15:59 GMT</pubDate></item><item><title><![CDATA[Reply to STL String sizeof on Thu, 08 May 2008 20:25:25 GMT]]></title><description><![CDATA[<p>StringDoktor schrieb:</p>
<blockquote>
<p>wstring speichert ja dagegen 32-Bit-Werte</p>
</blockquote>
<p>Nope. std::wstring speichert Zeichen des Typs <em>wchar_t</em>. Und dessen Wertebereich ist implementationsspezifisch und muss lediglich einem der anderen ganzzahligen Typen entsprechen. Unter Linux ist wchar_t afaik 32 Bit breit, unter Windows hingegen 16 Bit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505689</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Thu, 08 May 2008 20:25:25 GMT</pubDate></item><item><title><![CDATA[Reply to STL String sizeof on Thu, 08 May 2008 20:52:20 GMT]]></title><description><![CDATA[<p>Ich weiß nicht, ob das schon klargeworden ist:</p>
<p>sizeof() liefert die zur Compile-Zeit bekannte Größe, die sich aus Datenmembern, Padding, VMT u.a. zusammensetzt.</p>
<p>sizeof(int <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="😉"
    /> ist auf einer Platform immer gleich groß, egal wieviel Speicher dafür alloziert ist.</p>
<p>Für std::string gibt es sehr unterschiedliche Implementationen, Zumindest die Größe eines Zeigers.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1505706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1505706</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Thu, 08 May 2008 20:52:20 GMT</pubDate></item></channel></rss>