<?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[[Gelöst] strdup mit built in language features only]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>könnte mir jemand erklären wie man folgendes machen würde:</p>
<pre><code>Write a function, char* strdup(const char*), that copies a C-style string into memory it allocates on the free store. Do not use any standard library functions.
</code></pre>
<p>Mir ist klar, dass ich sowas nie machen wollen würde, aber iss halt so ne Übungsaufgabe, die ich nicht hinbekomme.</p>
<p>Mein Problem ist auch, dass 'str' ja eigentlich const sein sollte, also weiß ich nicht, wie ich den Speicher allozieren soll und den Inhalt kopieren.</p>
<p>Da man ja immer Code zeigen muss, mein Ansatz:</p>
<pre><code>char* my_strdup(const char* str)
{
    if (!str) return &quot;&quot;;
    size_t count = 1;  // space for '\0'
    for ( ; *str != '\0'; ++str)
        ++count;
    char* s = new char[count];
    while (*str != '\0') {
        *s = *str;
        ++s;
        ++str;
    }
    *s = *str;  // '\0'
    return s;
}
</code></pre>
<p>Folgender Test gibt keinen Output:</p>
<pre><code>int main()
{
    char s[] = &quot;Hello World!&quot;;
    char* str = my_strdup(s);
    while (*str != '\0') cout &lt;&lt; *str;
    cout &lt;&lt; '\n';
}
</code></pre>
<p>Hoffe jemand ist so nett und zeigt mir, wie das richtig geht.</p>
<p>LG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/330532/gelöst-strdup-mit-built-in-language-features-only</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Jul 2026 04:56:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/330532.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Jan 2015 19:29:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Gelöst] strdup mit built in language features only on Thu, 15 Jan 2015 06:58:55 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>könnte mir jemand erklären wie man folgendes machen würde:</p>
<pre><code>Write a function, char* strdup(const char*), that copies a C-style string into memory it allocates on the free store. Do not use any standard library functions.
</code></pre>
<p>Mir ist klar, dass ich sowas nie machen wollen würde, aber iss halt so ne Übungsaufgabe, die ich nicht hinbekomme.</p>
<p>Mein Problem ist auch, dass 'str' ja eigentlich const sein sollte, also weiß ich nicht, wie ich den Speicher allozieren soll und den Inhalt kopieren.</p>
<p>Da man ja immer Code zeigen muss, mein Ansatz:</p>
<pre><code>char* my_strdup(const char* str)
{
    if (!str) return &quot;&quot;;
    size_t count = 1;  // space for '\0'
    for ( ; *str != '\0'; ++str)
        ++count;
    char* s = new char[count];
    while (*str != '\0') {
        *s = *str;
        ++s;
        ++str;
    }
    *s = *str;  // '\0'
    return s;
}
</code></pre>
<p>Folgender Test gibt keinen Output:</p>
<pre><code>int main()
{
    char s[] = &quot;Hello World!&quot;;
    char* str = my_strdup(s);
    while (*str != '\0') cout &lt;&lt; *str;
    cout &lt;&lt; '\n';
}
</code></pre>
<p>Hoffe jemand ist so nett und zeigt mir, wie das richtig geht.</p>
<p>LG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2437590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437590</guid><dc:creator><![CDATA[HarteWare]]></dc:creator><pubDate>Thu, 15 Jan 2015 06:58:55 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] strdup mit built in language features only on Wed, 14 Jan 2015 19:36:03 GMT]]></title><description><![CDATA[<p>Warum sollte str const sein?<br />
Was ist dein Problem mit dem gezeigten Code?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2437591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437591</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 14 Jan 2015 19:36:03 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] strdup mit built in language features only on Wed, 14 Jan 2015 19:38:16 GMT]]></title><description><![CDATA[<p>Du solltest einen Zeiger auf den Anfang behalten und diesen zurückgeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2437592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437592</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 14 Jan 2015 19:38:16 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] strdup mit built in language features only on Wed, 14 Jan 2015 20:53:50 GMT]]></title><description><![CDATA[<p>Also so:</p>
<pre><code>char* my_strdup(char* str)
{
    if (!str) return &quot;&quot;;
    size_t count = 1;  // space for '\0'
    for ( ; *str != '\0'; ++str)
        ++count;
    char* s = new char[count];
    char* res = s;  // Zeiger auf Anfang
    while (*str != '\0') {
        *s = *str;
        ++s;
        ++str;
    }
    *s = *str;  // '\0'
    return res;
}
</code></pre>
<p>str const ist Aufgabentechnisch vorgegeben. Problem kenne ich nicht, ich erhalte keinen Output, wenn ich das Ergebnis der Funktion mit beschriebener Methode ausgebe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2437593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437593</guid><dc:creator><![CDATA[HarteWare]]></dc:creator><pubDate>Wed, 14 Jan 2015 20:53:50 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] strdup mit built in language features only on Wed, 14 Jan 2015 20:54:24 GMT]]></title><description><![CDATA[<p>Auf welche Stelle zeigt <em>str</em>, wenn das Programm in Zeile 7 angekommen ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2437611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437611</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Wed, 14 Jan 2015 20:54:24 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] strdup mit built in language features only on Wed, 14 Jan 2015 21:11:36 GMT]]></title><description><![CDATA[<p>Auf das terminierende '\0'. *facepalm*. Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /><br />
Habe es etwas angepasst. Zwar ist die Lösung trotzdem ohne den string const zu übergeben (was meiner Ansicht nach schlechtes Design ist, weil die Funktion eigentlich nicht ihr Argument verändern sollte), aber es &quot;funktioniert&quot;:</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

char* my_strdup(char* str)
{
    if (!str) return &quot;&quot;;
    size_t count = 1;  // space for '\0'

    // Zeichen zählen und entsprechend neues char-array allozieren
    for (char* s = str; *s != '\0'; ++s) ++count;
    char* s = new char[count];

    // kopieren aller Zeichen von str nach s
    for (size_t i = 0; i &lt; count; ++i)
        s[i] = str[i];

    return s;
}

int main()
{
    char s[] = &quot;Hello World!&quot;;
    char* str = my_strdup(s);
    while (*str != '\0') {
        cout &lt;&lt; *str;
        ++str;  // whoops, ohne diese Zeile lacht einen der PC aus
    }
    cout &lt;&lt; '\n';
}
</code></pre>
<p>Danke schonmal. Falls jemand weiß, wie ich einen const pointer irgendwie kopieren kann oder wie ich das halt löse, dass mein Argument const char* sein kann, ich bin offen für Vorschläge.</p>
<p>LG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2437617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437617</guid><dc:creator><![CDATA[HarteWare]]></dc:creator><pubDate>Wed, 14 Jan 2015 21:11:36 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] strdup mit built in language features only on Wed, 14 Jan 2015 21:15:41 GMT]]></title><description><![CDATA[<p>Const char* zeigt auf etwas konstantes. Der Pointer ist nicht konstant. Wo ist das Problem?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2437619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437619</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 14 Jan 2015 21:15:41 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] strdup mit built in language features only on Wed, 14 Jan 2015 21:18:41 GMT]]></title><description><![CDATA[<p>DAs mit dem const sollte doch jetzt klappen.<br />
Du veränderst in der Funktion <em>strdup</em> ja <em>str</em> nicht mehr.<br />
Du kannst auch beliebig viele andere char-Pointer in deiner Funktion einsetzen. Z.B. beim kopieren.</p>
<p>Zu einem <code>new</code> gehört auch ein <code>delete</code> .<br />
In diesem Fall in main.<br />
Wie sieht das aber aus, wenn die Funktion das &quot;&quot; aus Zeile 7 zurück gibt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2437620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437620</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Wed, 14 Jan 2015 21:18:41 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] strdup mit built in language features only on Wed, 14 Jan 2015 21:26:00 GMT]]></title><description><![CDATA[<p>HarteWare schrieb:</p>
<blockquote>
<p>Danke schonmal. Falls jemand weiß, wie ich einen const pointer irgendwie kopieren kann oder wie ich das halt löse, dass mein Argument const char* sein kann, ich bin offen für Vorschläge.</p>
</blockquote>
<p>Wenn ich nichts übersehen habe, dann ist diese Zeile hier der Grund, weshalb kein <code>const char*</code> als Paranmeter akzeptiert wird:</p>
<pre><code>for (char* s = str; *s != '\0'; ++s) ++count;
</code></pre>
<p>Man kann nicht einfach so einen Zeiger auf konstante Typen ein einen Zeiger auf nicht-konstante Typen kopieren. Die einfache Lösung ist, hier <code>s</code> ebenafalls als als <code>const</code> zu deklarieren:</p>
<pre><code>for (const char* s = str; *s != '\0'; ++s) ++count;
</code></pre>
<p>Das macht auch insofern Sinn, dass die <code>char</code> in der Schleife ohnehin nicht verändert werden, sondern lediglich der Pointer auf die <code>char</code> .<br />
<code>const char*</code> bedeutet schließlich <em>nicht-konstanter</em> Zeiger auf <em>konstante</em> char.</p>
<p>Gruss,<br />
Finnegan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2437622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437622</guid><dc:creator><![CDATA[Finnegan]]></dc:creator><pubDate>Wed, 14 Jan 2015 21:26:00 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] strdup mit built in language features only on Wed, 14 Jan 2015 21:34:59 GMT]]></title><description><![CDATA[<p>@manni66<br />
Ich persönlich sehe da auch kein Problem, aber VC++ schon:</p>
<pre><code>error C2440: 'initializing' : cannot convert from 'const char *' to 'char *'
</code></pre>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/32185">@DirkB</a>:<br />
Ich denke die Lösung ist ganz einfach, dass ich anstatt den Pointer zu bewegen einfach subscripting verwende, um die Zeichen zu zählen:</p>
<pre><code>for (size_t i = 0; str[i] != '\0'; ++i) ++count;
</code></pre>
<p>edit: Hab grad den Beitrag von Finnegan gesehen: Mir war schlicht und ergreifend die Bedeutung des const in diesem Fall nicht ganz klar. Hat sich geklärt.</p>
<p>Hab das delete angefügt. Jetzt knallts. Irgend ne Debug Assertion macht Schluss:</p>
<pre><code>_BLOCK_TYPE_IS_VALID(pHead-&gt;nBlockUse)
</code></pre>
<p>Google sagt mir, dass dies kein seltener Fehler ist, aber ich kann aus den Antworten anderer Probleme nicht rauslesen, was ich da falsch mache.</p>
<p>Wenn ich nur &quot;&quot; zurückgebe, keine Ahnung was da los ist. Vielleicht terminiert meine while Schleife nie? Finde das ganze mit dem '\0' etwas kompliziert, weiß nicht wo das überall implizit angefügt wird und wo nicht.</p>
<p>Da merk ich langsam erst, wie wundervoll std::string ist.</p>
<p>Momentaner Code:</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

char* my_strdup(const char* str)
{
    if (!str) return &quot;&quot;;
    size_t count = 1;  // space for '\0'

    // Zeichen zählen und entsprechend neues char-array allozieren
    for (const char* s = str; *s != '\0'; ++s) ++count;
    char* s = new char[count];

    // kopieren aller Zeichen von str nach s
    for (size_t i = 0; i &lt; count; ++i)
        s[i] = str[i];

    return s;
}

int main()
{
    char s[] = &quot;Hello World!&quot;;
    char* str = my_strdup(s);
    while (*str != '\0') {
        cout &lt;&lt; *str;
        ++str;  // whoops, ohne diese Zeile lacht einen der PC aus
    }
    cout &lt;&lt; '\n';
    delete[] str;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2437624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437624</guid><dc:creator><![CDATA[HarteWare]]></dc:creator><pubDate>Wed, 14 Jan 2015 21:34:59 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] strdup mit built in language features only on Wed, 14 Jan 2015 22:20:58 GMT]]></title><description><![CDATA[<p>HarteWare schrieb:</p>
<blockquote>
<p>Hab das delete angefügt. Jetzt knallts. Irgend ne Debug Assertion macht Schluss:</p>
<pre><code>_BLOCK_TYPE_IS_VALID(pHead-&gt;nBlockUse)
</code></pre>
<p>[...]</p>
<p>Wenn ich nur &quot;&quot; zurückgebe, keine Ahnung was da los ist. [...]</p>
</blockquote>
<p>Wenn Du <code>&quot;&quot;</code> zurückgibst, gibst du einen Zeiger auf einen Zeichenkettenliteral zurück. Einen solchen darfst du nicht an <code>delete</code> geben.</p>
<p>Gib doch immer fehlerfall einfach <code>nullptr</code> zurück.</p>
<p>btw, meine Variante:</p>
<pre><code class="language-cpp">char * strdup( char const * src )
{
	if( !src )
		return nullptr;

	char const * p = src;
	while( *p++ );

	char *dst = new char [ p - src ];

	p = src;
	while( *dst++ = *p++ );

	return dst - ( p - src );
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2437636</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437636</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Wed, 14 Jan 2015 22:20:58 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] strdup mit built in language features only on Wed, 14 Jan 2015 22:41:24 GMT]]></title><description><![CDATA[<p>Dein Programm stürzt ab, weil du immer den gleichen Fehler machst: du schiebst einen Pointer über das Array bis zum Rnde und verwendest ihn dann, als würede er noch auf den Anfang zeigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2437638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437638</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 14 Jan 2015 22:41:24 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] strdup mit built in language features only on Wed, 14 Jan 2015 22:48:52 GMT]]></title><description><![CDATA[<p>oh, stimmt, die <code>main()</code> hab' ich mir garnicht angesehen. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2437640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437640</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Wed, 14 Jan 2015 22:48:52 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] strdup mit built in language features only on Thu, 15 Jan 2015 05:45:43 GMT]]></title><description><![CDATA[<p>HarteWare schrieb:</p>
<blockquote>
<p>edit: Hab grad den Beitrag von Finnegan gesehen: Mir war schlicht und ergreifend die Bedeutung des const in diesem Fall nicht ganz klar. Hat sich geklärt.</p>
</blockquote>
<p>Solche Ausdrücke kann man grob von rechts nach links lesen. Auf Englisch funktioniert es mit der Grammatik des Satzbaus einfacher, daher mal auf Englisch:</p>
<pre><code>char *p;
p      p is a
*      p is a pointer to
char   p is a pointer to char
</code></pre>
<pre><code>char * const p;
p      p is a
const  p is a constant
*      p is a constant pointer to
char   p is a constant pointer to char
</code></pre>
<pre><code>char const * p;
p      p is a
*      p is a pointer to
const  p is a pointer to a constant
char   p is a pointer to a constant char
</code></pre>
<pre><code>const char * p;
p      p is a
*      p is a pointer to
char   p is a pointer to char
const  p is a pointer to a char constant
</code></pre>
<p>(wobei eine char constant und ein constant char das gleiche sind)</p>
<pre><code>const char * const p;
p      p is a
const  p is a constant
*      p is a constant pointer to
char   p is a constant pointer to char
const  p is a constant pointer to char constant
</code></pre>
<pre><code>char const * const p;
p      p is a
const  p is a constant
*      p is a constant pointer to
const  p is a constant pointer to a constant
char   p is a constant pointer to a constant char
</code></pre>
<pre><code>const char const * const p;
p      p is a
const  p is a constant
*      p is a constant pointer to
const  p is a constant pointer to a constant
char   p is a constant pointer to a constant char
const  p is a constant pointer to a constant char constant
</code></pre>
<p>Eine constant char constant? Doppelt gemoppelt; das geht nicht mehr; der Ausdruck ist falsch.</p>
<p>So wird auch klar, dass eventuelle Leerzeichen oder nicht vorhandene Leerzeichen überhaupt nichts an der Bedeutung ändern. Wird manchmal nämlich fälschlicherweise angenommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2437647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437647</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 15 Jan 2015 05:45:43 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] strdup mit built in language features only on Thu, 15 Jan 2015 06:58:39 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8250">@Swordfish</a>:<br />
mmh, deine Variante ist eigentlich in meinen Augen recht elegant, wenn man halt dan weiß, dass if(char) false ergibt, falls da ein '\0' drin steckt.<br />
Auch das Zählen der Zeichen finde ich da besser gelöst.</p>
<p>@manni66:<br />
Ich kann nur hoffen, dass mir dieser Fehler nie wieder passiert.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a>:<br />
supi Erklärung, echt verständlich!</p>
<p>Vielen Dank nochmals an alle, die geholfen haben. Ist echt genial das Forum hier <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>
<p>LG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2437660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437660</guid><dc:creator><![CDATA[HarteWare]]></dc:creator><pubDate>Thu, 15 Jan 2015 06:58:39 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] strdup mit built in language features only on Thu, 15 Jan 2015 08:24:13 GMT]]></title><description><![CDATA[<p>HarteWare schrieb:</p>
<blockquote>
<p>..., wenn man halt dan weiß, dass if(char) false ergibt, falls da ein '\0' drin steckt.</p>
</blockquote>
<p>Das sind Grundlagen. Die muss man wissen.<br />
Aber du kannst es auch in lang schreiben: <code>if(char != '\0')</code></p>
<p>HarteWare schrieb:</p>
<blockquote>
<p>Auch das Zählen der Zeichen finde ich da besser gelöst.</p>
</blockquote>
<p>Aber für den Rückgabewert hätte man eine Kopie von <em>dst</em> nehmen können. Das erspart die Rechnerei am Ende.</p>
<pre><code>p = dst; // src brauch man danach nicht mehr, kann daher verändert werden.
    while( *dst++ = *src+ );

    return p;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2437674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437674</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Thu, 15 Jan 2015 08:24:13 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] strdup mit built in language features only on Thu, 15 Jan 2015 10:50:12 GMT]]></title><description><![CDATA[<p>DirkB schrieb:</p>
<blockquote>
<p>HarteWare schrieb:</p>
<blockquote>
<p>Auch das Zählen der Zeichen finde ich da besser gelöst.</p>
</blockquote>
<p>Aber für den Rückgabewert hätte man eine Kopie von <em>dst</em> nehmen können. Das erspart die Rechnerei am Ende.</p>
<pre><code>p = dst; // src brauch man danach nicht mehr, kann daher verändert werden.
    while( *dst++ = *src+ );
 
    return p;
</code></pre>
</blockquote>
<p>Nicht mit <code>p</code> . <code>p</code> ist <code>char const *</code> . Dafür hätt's eine weitere Variable gebraucht, oder einen <code>const_cast&lt; char * &gt;( p )</code> beim <code>return</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2437692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437692</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 15 Jan 2015 10:50:12 GMT</pubDate></item></channel></rss>