<?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[null in std::string -&amp;gt; UB oder OK?]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>folgende zwei Assertions halten hier bei mir (VC10 32bit):</p>
<pre><code>#include &lt;cassert&gt;
#include &lt;string&gt;
int main()
{
    using namespace std;
    string s(&quot;0123&quot;);
    s.back() = '\0';
    assert(s.size() == 4);
    assert(s.back() == '\0');
}
</code></pre>
<p>Ist das vom Standard so vorgeschrieben oder sollte ich mich da lieber nicht drauf verlassen?</p>
<p>Gruß<br />
Dobi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/323390/null-in-std-string-gt-ub-oder-ok</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 03:42:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/323390.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Jan 2014 12:42:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 12:43:36 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>folgende zwei Assertions halten hier bei mir (VC10 32bit):</p>
<pre><code>#include &lt;cassert&gt;
#include &lt;string&gt;
int main()
{
    using namespace std;
    string s(&quot;0123&quot;);
    s.back() = '\0';
    assert(s.size() == 4);
    assert(s.back() == '\0');
}
</code></pre>
<p>Ist das vom Standard so vorgeschrieben oder sollte ich mich da lieber nicht drauf verlassen?</p>
<p>Gruß<br />
Dobi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380135</guid><dc:creator><![CDATA[Dobi]]></dc:creator><pubDate>Tue, 28 Jan 2014 12:43:36 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 12:47:56 GMT]]></title><description><![CDATA[<p>C++ std::strings sind nicht nullterminiert. Darauf kannst du dich AFAIK verlassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380137</guid><dc:creator><![CDATA[nman]]></dc:creator><pubDate>Tue, 28 Jan 2014 12:47:56 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 12:59:14 GMT]]></title><description><![CDATA[<p>Du schreibst in das letzte Zeichen des String das Zeichen '\0'. Was soll daran nicht definiert sein?<br />
Die Frage ist, warum tust du das? Du wirst dir mit diesem Konstrukt in den Fuß schießen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380142</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Tue, 28 Jan 2014 12:59:14 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 13:19:22 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Du schreibst in das letzte Zeichen des String das Zeichen '\0'. Was soll daran nicht definiert sein?</p>
</blockquote>
<p>Die Tatsache, dass der Debugger erstmal das letzte Zeichen nicht mit anzeigt, und dass hierbei:</p>
<pre><code>string s = string(&quot;0&quot;) + string(&quot;1\0&quot;);
</code></pre>
<p><code>s.size() == 2</code> (und nicht 3) ist, hat mich skeptisch gemacht. Aber OK, &quot;1\0&quot; wird hier halt erstmal nullterminiert behandelt.<br />
Kopieren hingegen geht übrigens klar:</p>
<pre><code>#include &lt;cassert&gt;
#include &lt;string&gt;
int main()
{
	using namespace std;
	string s(&quot;0123&quot;);
	s.back() = '\0';
	auto b = s;
	assert(s.size() == 4);
	assert(b.size() == 4);
	assert(s.back() == '\0');
	assert(b.back() == '\0');
}
</code></pre>
<p>manni66 schrieb:</p>
<blockquote>
<p>Die Frage ist, warum tust du das? Du wirst dir mit diesem Konstrukt in den Fuß schießen!</p>
</blockquote>
<p>In einem kleinen TCP/IP-Protokoll, dessen Tokens in meiner Software als Strings rumgereicht werden, kommt nun die (unnötige) Anforderung hinzu, dass an einer Stelle ein redundantes '\0' hinten dran sein muss.<br />
Da sich diese Krankheit aber ziemlich isoliert in einer kleinen Klasse abspielen wird, und ich die Gefahr, dass sich die Seuche durch die ganze Software ausbreiten wird, momentan als sehr gering einschätze, wollte ich jetzt nicht deswegen alles umschreiben, sondern es erstmal so lösen. Ich denke also, meine Füße (und die von anderen) sollten erstmal weiterhin sicher sein. <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>
<p>Danke für eure Hilfe. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380150</guid><dc:creator><![CDATA[Dobi]]></dc:creator><pubDate>Tue, 28 Jan 2014 13:19:22 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 13:26:46 GMT]]></title><description><![CDATA[<p>Dobi schrieb:</p>
<blockquote>
<p>dass hierbei:</p>
<pre><code>string s = string(&quot;0&quot;) + string(&quot;1\0&quot;);
</code></pre>
<p><code>s.size() == 2</code> (und nicht 3) ist, hat mich skeptisch gemacht.</p>
</blockquote>
<p>In dem Fall sieht der String ja schon gar nichts mehr vom \0, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380153</guid><dc:creator><![CDATA[nman]]></dc:creator><pubDate>Tue, 28 Jan 2014 13:26:46 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 13:29:22 GMT]]></title><description><![CDATA[<p>Jupp, das string-Literal geht in den ctor mit (const char*) und wird dementsprechend der nach der ersten Nullterminierung nicht mehr weiter verarbeitet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380154</guid><dc:creator><![CDATA[Dobi]]></dc:creator><pubDate>Tue, 28 Jan 2014 13:29:22 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 13:31:29 GMT]]></title><description><![CDATA[<p>nman schrieb:</p>
<blockquote>
<p>Dobi schrieb:</p>
<blockquote>
<p>dass hierbei:</p>
<pre><code>string s = string(&quot;0&quot;) + string(&quot;1\0&quot;);
</code></pre>
<p><code>s.size() == 2</code> (und nicht 3) ist, hat mich skeptisch gemacht.</p>
</blockquote>
<p>In dem Fall sieht der String ja schon gar nichts mehr vom \0, oder?</p>
</blockquote>
<p>richtig. Dieser Stringkonstruktor erwartet ja schließlich nicht ausdrücklich ein Stringliteral sondern einen Zeiger, der auf einen nullterminierten String zeigt. Und sobald diese Null gefunden wird, ist der String eben zu Ende. Man müsste hier entsprechend noch die Größe angeben.</p>
<pre><code>string s = string(&quot;0&quot;) + string(&quot;1\0&quot;,2);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2380156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380156</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 28 Jan 2014 13:31:29 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 13:31:45 GMT]]></title><description><![CDATA[<blockquote>
<p>dass an einer Stelle ein redundantes '\0' hinten dran sein muss.</p>
</blockquote>
<p>dann mach doch dort:</p>
<pre><code>const char* dest = s.c_str();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2380157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380157</guid><dc:creator><![CDATA[weicher]]></dc:creator><pubDate>Tue, 28 Jan 2014 13:31:45 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 13:34:53 GMT]]></title><description><![CDATA[<blockquote>
<p>Ist das vom Standard so vorgeschrieben oder sollte ich mich da lieber nicht drauf verlassen?</p>
</blockquote>
<p>Ja, ist vorgeschrieben. Das Nullzeichen ist ein Zeichen wie jedes andere auch. Der einzige Kontext, wo es sich bei <code>std::string</code> nicht verhaelt wie jedes andere, ist der von nman gezeigte (C-Strings die ohne explizite Laengenangabe an solche Funktionen uebergeben werden).<br />
Das hier duerfte stattdessen ein anderes Ergebnis bringen:</p>
<pre><code>auto s = &quot;a&quot;s + string(&quot;b\n&quot;, 2);
</code></pre>
<p>Edit: Verdammt, camper <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<blockquote>
<p>dann mach doch dort</p>
</blockquote>
<p>Es ist nicht definiert, dass <code>s.c_str() == &amp;s[0]</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380158</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 28 Jan 2014 13:34:53 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 13:39:21 GMT]]></title><description><![CDATA[<p>Sogar das hier duerfte AFAIR ein anderes Ergebnis bringen:</p>
<pre><code>auto s = &quot;a&quot;s + &quot;b\n&quot;s;
</code></pre>
<p>(Bin gerade in der Schule, kann das nicht testen, camper du hast doch Clang 3.4?)</p>
<p>Edit: Moment:</p>
<blockquote>
<p>If L is a user-defined-string-literal, let str be the literal without its ud-suffix and let len be the number of code units in str (i.e., its length excluding <strong>the</strong> terminating null character).</p>
</blockquote>
<p>Dann klappt das also, nicht wahr?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380161</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 28 Jan 2014 13:39:21 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 13:40:45 GMT]]></title><description><![CDATA[<blockquote>
<p>Es ist nicht definiert, dass s.c_str() == &amp;s[0].</p>
</blockquote>
<p>hier steht was anderes:</p>
<p><a href="http://www.cplusplus.com/reference/string/string/c_str/" rel="nofollow">http://www.cplusplus.com/reference/string/string/c_str/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380164</guid><dc:creator><![CDATA[weicher]]></dc:creator><pubDate>Tue, 28 Jan 2014 13:40:45 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 13:42:38 GMT]]></title><description><![CDATA[<p>weicher schrieb:</p>
<blockquote>
<p>hier steht was anderes:</p>
</blockquote>
<p>Noe.</p>
<blockquote>
<p>Returns a pointer to an array that contains a null-terminated sequence of characters (i.e., a C-string) representing the current value of the string object.</p>
<p><strong>This array includes the same sequence of characters that make up the value of the string object plus an additional terminating null-character ('\0') at the end</strong>.</p>
</blockquote>
<p>Zudem darf der Inhalte dieses zurueckgegebenen C-Strings nicht veraendert warden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380166</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 28 Jan 2014 13:42:38 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 13:54:00 GMT]]></title><description><![CDATA[<p>Dobi sagt:</p>
<blockquote>
<p>In einem kleinen TCP/IP-Protokoll, dessen Tokens in meiner Software als Strings rumgereicht werden, kommt nun die (unnötige) Anforderung hinzu, dass an einer Stelle ein redundantes <strong>'\0' hinten dran sein muss.</strong></p>
</blockquote>
<p>Da bei TCP/IP fast immer irgend eine API aufgerufen wird ist IMHO das Wort &quot;unnötig&quot; zurecht in Klammern.</p>
<p>std::string.c_str() doku sagt:</p>
<blockquote>
<p><strong>This array includes the same sequence of characters that make up the value of the string object plus an additional terminating null-character ('\0') at the end.</strong></p>
</blockquote>
<p>Also macht std::string.c_str() genau das was Dobi will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380174</guid><dc:creator><![CDATA[weicher]]></dc:creator><pubDate>Tue, 28 Jan 2014 13:54:00 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 14:21:47 GMT]]></title><description><![CDATA[<p>weicher schrieb:</p>
<blockquote>
<p>Da bei TCP/IP fast immer irgend eine API aufgerufen wird ist IMHO das Wort &quot;unnötig&quot; zurecht in Klammern.</p>
</blockquote>
<p>Naja, wenn ein Token so aussehen soll:</p>
<pre><code>Startzeichenfolge
char[3] -&gt; Anzahl Zeichen
char[n] -&gt; Zeichen
\0
Endzeichenfolge
</code></pre>
<p>finde ich die null schon ziemlich unnötig. Ich würde normal entweder die Anzahl Zeichen vorwegschicken <em>oder</em> nullterminieren, aber nicht beides.</p>
<p>weicher schrieb:</p>
<blockquote>
<p>Also macht std::string.c_str() genau das was Dobi will.</p>
</blockquote>
<p>Nö, selbst wenn das gehen würde, würde sich die Seuche dann ja auch in den Rest des Programms ausbreiten, weil ich mit char* hantieren müsste. Mit der andereren Lösung bleiben schön alles ein String, nur dass manchmal halt '\0' drin vorkommt, was mich im Rest vom Code aber nicht interessieren muss. Ich finde das so wesentlich schicker.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380183</guid><dc:creator><![CDATA[Dobi]]></dc:creator><pubDate>Tue, 28 Jan 2014 14:21:47 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 14:32:41 GMT]]></title><description><![CDATA[<blockquote>
<p>Nö, selbst wenn das gehen würde, würde sich die Seuche dann ja auch in den Rest des Programms ausbreiten, weil ich mit char* hantieren müsste.</p>
</blockquote>
<p>Nein, so habe ich das nicht gemeint.</p>
<p>Du kannst im ganzen Programm ganz normal mit dem std::string arbeiten ohne dieses gefrickel mit dem anhängen einer '\0'.</p>
<p>Dann must Du nur genau dort wo ein NULL terminierter string verlangt wird den std::string.c_str() verwenden. Das ist übrigends keine Seuche <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="😉"
    /> die meisten API's verwenden const char* oder char* und genau zu diesem Zweck hat std::string die Funktion c_str()</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380189</guid><dc:creator><![CDATA[weicher]]></dc:creator><pubDate>Tue, 28 Jan 2014 14:32:41 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 14:47:06 GMT]]></title><description><![CDATA[<p>Mal ganz banal:</p>
<pre><code>#include &lt;string&gt;
#include &lt;iostream&gt;

std::string frame(const std::string&amp; s)
{
	return std::string(&quot;start&quot;) + s + &quot;ende&quot;;
}

std::string generateNormal()
{
	return &quot;huhu&quot;;
}

std::string generateFrickelMist()
{
	std::string s(&quot;003bla_&quot;);
	s.back() = '\0';
	return s;
}

std::string generate()
{
	bool cond( false );
	auto s = cond ? generateNormal() : generateFrickelMist();
    return frame(s);
}

void send(const std::string&amp; s)
{
    // Druecks ins Socket.
	std::cout &lt;&lt; s &lt;&lt; &quot;\n&quot;;
}

int main()
{
    for(;;)
    {
        auto s = generate();
        send( s );
    }
}
</code></pre>
<p>Wie wär das jetzt mit std::string.c_str() schöner?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380196</guid><dc:creator><![CDATA[Dobi]]></dc:creator><pubDate>Tue, 28 Jan 2014 14:47:06 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 15:15:20 GMT]]></title><description><![CDATA[<p>Nee, wird nicht schöner <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>
<p>Ich bin davon ausgegangen, dass Du eine struct für einen API Aufruf ausfüllen musst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380206</guid><dc:creator><![CDATA[weicher]]></dc:creator><pubDate>Tue, 28 Jan 2014 15:15:20 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 17:48:21 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>Es ist nicht definiert, dass <code>s.c_str() == &amp;s[0]</code> .</p>
</blockquote>
<p>Doch.</p>
<p>(Ja, in C++03 ist es nicht explizit definiert, aber de facto eben doch)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380256</guid><dc:creator><![CDATA[c++11]]></dc:creator><pubDate>Tue, 28 Jan 2014 17:48:21 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 18:11:17 GMT]]></title><description><![CDATA[<p>Die C++-Programmiersprache §20.3.7 schrieb:</p>
<blockquote>
<p>[...]im von <code>c_str()</code> oder <code>data()</code> reservierten Puffer[...]</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2380263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380263</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Tue, 28 Jan 2014 18:11:17 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 18:52:44 GMT]]></title><description><![CDATA[<p>c++11 schrieb:</p>
<blockquote>
<p>Doch.</p>
</blockquote>
<p>Ja, das stimmt, seit C++11:</p>
<blockquote>
<pre><code>const charT* c_str() const noexcept;
const charT* data() const noexcept;
</code></pre>
<p><em>Returns</em>: A pointer <code>p</code> such that <code>p + i == &amp;operator[](i)</code> for each <code>i</code> in <code>[0,size()]</code> .</p>
</blockquote>
<p>In C++03 war das zwar in den Implementierungen praktisch immer der Fall, war aber nicht garantiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380270</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380270</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 28 Jan 2014 18:52:44 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 18:51:54 GMT]]></title><description><![CDATA[<blockquote>
<p>§20.3.7</p>
</blockquote>
<p>So einen Paragraphen gibt es nicht <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="😕"
    /> 21.3.7 genauso wenig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380271</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 28 Jan 2014 18:51:54 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 19:11:50 GMT]]></title><description><![CDATA[<p>Hallo Doby,</p>
<pre><code>std::string generateFrickelMist() 
{ 
     std::string s(&quot;003bla_&quot;); 
     s.back() = '\0'; 
     return s; 
}
</code></pre>
<p>könntest Du auch so machen:</p>
<pre><code>std::string generateFrickelMist() 
{ 
     std::string s(&quot;003bla&quot;); 
     s.push_back('\0'); 
     return s; 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2380273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380273</guid><dc:creator><![CDATA[weicher]]></dc:creator><pubDate>Tue, 28 Jan 2014 19:11:50 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 19:12:58 GMT]]></title><description><![CDATA[<p>Oh stimmt, das ist hübscher, danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2380275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380275</guid><dc:creator><![CDATA[Dobi]]></dc:creator><pubDate>Tue, 28 Jan 2014 19:12:58 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 20:22:17 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<blockquote>
<p>§20.3.7</p>
</blockquote>
<p>So einen Paragraphen gibt es nicht <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="😕"
    /> 21.3.7 genauso wenig.</p>
</blockquote>
<blockquote>
<p><strong>Die C++-Programmiersprache</strong> §20.3.7</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2380291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380291</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Tue, 28 Jan 2014 20:22:17 GMT</pubDate></item><item><title><![CDATA[Reply to null in std::string -&amp;gt; UB oder OK? on Tue, 28 Jan 2014 20:46:32 GMT]]></title><description><![CDATA[<p>Whups! Ich habe gar nicht geschaut, auf was sich das bezieht <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/2380298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2380298</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 28 Jan 2014 20:46:32 GMT</pubDate></item></channel></rss>