<?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[C++ Primer - Code]]></title><description><![CDATA[<p>Ich verstehe paar Dinge bei dem Code aus meinem Buch nicht:</p>
<pre><code class="language-cpp">const char *pc = &quot;a very long literal string&quot;;
const size_t len = strlen(pc +1); //Verstehe ich nicht? Warum kann ich &quot;+1&quot; mit in die Funktion schreiben, bei mir müsste dass &quot;strlen(pc) + 1&quot; heißen?!
for(size_t ix = 0; ix != 1000000; ++ix)
{
    char *pc2 = new char[len + 1]; //Warum &quot;+1&quot;? Warum? dass verstehe ich gar nicht.
    strcpy(pc2, pc);
    if(strcmp(pc2, pc))
    ; //Warum &quot;;&quot;, gehört delete [] pc2 nicht mit zum If-Rumpf?
    delete [] pc2;
}
</code></pre>
<p>Ich hoffe ihr könnt mir das alles beantworten.</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/233285/c-primer-code</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 00:28:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/233285.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 02 Feb 2009 22:35:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++ Primer - Code on Mon, 02 Feb 2009 22:35:54 GMT]]></title><description><![CDATA[<p>Ich verstehe paar Dinge bei dem Code aus meinem Buch nicht:</p>
<pre><code class="language-cpp">const char *pc = &quot;a very long literal string&quot;;
const size_t len = strlen(pc +1); //Verstehe ich nicht? Warum kann ich &quot;+1&quot; mit in die Funktion schreiben, bei mir müsste dass &quot;strlen(pc) + 1&quot; heißen?!
for(size_t ix = 0; ix != 1000000; ++ix)
{
    char *pc2 = new char[len + 1]; //Warum &quot;+1&quot;? Warum? dass verstehe ich gar nicht.
    strcpy(pc2, pc);
    if(strcmp(pc2, pc))
    ; //Warum &quot;;&quot;, gehört delete [] pc2 nicht mit zum If-Rumpf?
    delete [] pc2;
}
</code></pre>
<p>Ich hoffe ihr könnt mir das alles beantworten.</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656906</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Mon, 02 Feb 2009 22:35:54 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Primer - Code on Mon, 02 Feb 2009 23:03:39 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Wuerdest du mir die Seite nennen? Habe den C++ Primer naemlich auch.<br />
Ich finde den ganzen Code etwas merkwuerdig.<br />
<em>Zeile 2:</em> +1 sollte definitiv nach Ausfuehrung von strlen() kommen. Das hat den Grund, dass strlen() die Anzahl der Zeichen ohne Nullzeichen zurueckgibt.<br />
<em>Zeile 5:</em> Das +1 ist definitiv unnoetig, da der Platz fuer das Nullzeichen ja schon in Zeile 2 hinzugefuegt worden ist.<br />
<em>Zeile 7 + 8:</em> Sehr merkwuerdiger Code. strcmp vergleicht die zwei Strings und gibt NULL zurueck, falls kein Unterschied festgestellt werden konnte. Das if-Konstrukt hat durch das Semikolon dann absolut keine Wirkung. Ausserdem ergibt der Vergleich <em>immer</em> NULL zurueck, da wir ja wissen, dass die zwei Strings identisch sind.<br />
Und die ganze for-Schleife verstehe ich dann gar nicht mehr...</p>
<p>Sorry, falls ich nicht weiterhelfen konnte. Vielleicht weiss es ja ein anderer besser.</p>
<p>Gruss,<br />
Cartman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656916</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Mon, 02 Feb 2009 23:03:39 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Primer - Code on Mon, 02 Feb 2009 23:18:30 GMT]]></title><description><![CDATA[<p>Ist S. 174, der graue Kasten unten. Danke schon mal im Voraus.</p>
<p>MfG<br />
Stromberg</p>
<p>PS: Der C++ Primer ist bei mir &quot;Vierte Auflage&quot;, wäre ja blöd wenn die jetzt unterschiedlich wären, und wirs nicht checken würden <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/1656919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656919</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Mon, 02 Feb 2009 23:18:30 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Primer - Code on Mon, 02 Feb 2009 23:23:04 GMT]]></title><description><![CDATA[<p>Der Code dient anscheinend zu Vergleichszwecken. Hat sich halt ein Fehler mit den +1'en eingeschlichen.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656921</guid><dc:creator><![CDATA[kA]]></dc:creator><pubDate>Mon, 02 Feb 2009 23:23:04 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Primer - Code on Mon, 02 Feb 2009 23:43:04 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<pre><code class="language-cpp">const char *pc = &quot;a very long literal string&quot;;
const size_t len = strlen(pc +1); 
//Verstehe ich nicht? Warum kann ich &quot;+1&quot; mit in die Funktion schreiben, bei mir müsste dass &quot;strlen(pc) + 1&quot; heißen?!
</code></pre>
</blockquote>
<p>strlen(pc+1);</p>
<p>das heisst die Sringlänge wird ab &amp;pc[1] bzw &amp;(pc+1) ermittelt, also ohne das 'a'</p>
<p>Stromberg schrieb:</p>
<blockquote>
<pre><code class="language-cpp">char *pc2 = new char[len + 1]; //Warum &quot;+1&quot;? Warum? dass verstehe ich gar nicht.
    strcpy(pc2, pc);
</code></pre>
</blockquote>
<p>Es muss jetzt wegen des zuvorgesagten</p>
<p>char *pc2 = new char[len + 2];</p>
<p>heissen, damit man dann den ganzen String kopieren kann. <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/1656927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656927</guid><dc:creator><![CDATA[FritzeX]]></dc:creator><pubDate>Mon, 02 Feb 2009 23:43:04 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Primer - Code on Mon, 02 Feb 2009 23:44:01 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<p>Ist S. 174, der graue Kasten unten. Danke schon mal im Voraus.</p>
<p>MfG<br />
Stromberg</p>
<p>PS: Der C++ Primer ist bei mir &quot;Vierte Auflage&quot;, wäre ja blöd wenn die jetzt unterschiedlich wären, und wirs nicht checken würden <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>
</blockquote>
<p>Habe auch die 4. Auflage <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="🙂"
    /><br />
Der ueber mir hat Recht - hat sich leider ein Fehler eingeschlichen. Wie bereist erwaehnt muss das +1 in Zeile 2 raus und nach der Klammer folgen (fuer das Nullzeichen). Das +1 in Zeile 5 ist zwar unnoetig, aber kein Fehler, trotzdem unnoetig.<br />
Und strcmp soll eigentlich nur das Arbeiten mit dem neu erstellten String (durch strcpy) demonstrieren, schaetze ich (so kann ich das ausm Buch rauslesen) - weiter nichts. Fuer den Programmablauf ist es ohne Bedeutung.</p>
<p>Ich hoffe, ich konnte helfen.</p>
<p>Gruss<br />
Cartman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656929</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Mon, 02 Feb 2009 23:44:01 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Primer - Code on Tue, 03 Feb 2009 00:01:51 GMT]]></title><description><![CDATA[<p>@FritzeX<br />
Macht aber irgendwie keinen Sinn - dann kann man ja gleich <code>strlen(pc)+1</code> und spaeter <code>new char[len]</code> nehmen.<br />
Wo ist da der Unterschied?</p>
<p>Gruss<br />
Cartman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656934</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Tue, 03 Feb 2009 00:01:51 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Primer - Code on Tue, 03 Feb 2009 08:47:37 GMT]]></title><description><![CDATA[<p>Die deutsche Übersetzung des C++ Primer scheint ja echt mies zu sein. Hatte schon damals im Buchladen gesehen, das der dt. Übersetzer allein auf den ersten Seiten, den <code>cl.exe</code> Compiler als <code>c1.exe</code> übersetzt hat! <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="😡"
    /> Der C++-Primer ist nämlich ansonsten echt gut, wird aber durch delitantische Buchübersetzer total kaputt gemacht. Da würde ich mir vom Verlag das nächste Mal einen anderen Übersetzer wünschen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1657020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1657020</guid><dc:creator><![CDATA[Bulli]]></dc:creator><pubDate>Tue, 03 Feb 2009 08:47:37 GMT</pubDate></item></channel></rss>