<?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_str gib komische sachen zurück]]></title><description><![CDATA[<p>Also ich hab folgenes Problem: Ich habe eine Funktion<br />
die einen &quot;char*&quot; zurück gibt. in dieser Funktion<br />
verwende ich einen &quot;C++ String&quot;, setzte diesen und mache<br />
dann ein return mit c_str()!Aber c_str haut völligen<br />
quatsch raus!Ich habe das gefühl das er einfach irgendwo<br />
im Speicher liest nur nicht meinen String.</p>
<pre><code class="language-cpp">std::string TestLib::strFoo(std::string para)
{
	para.append(&quot;++&quot;);

	return para;
}

extern &quot;C&quot;
{

	char *TestFoo()
	{
		TestLib *objTest = new TestLib();

		std::string strTest = objTest-&gt;strFoo(&quot;Hello&quot;);

		char *chTest = const_cast&lt;char *&gt;(strTest.c_str());

		return chTest;
	}

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/176019/c_str-gib-komische-sachen-zurück</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 10:49:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/176019.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 16 Mar 2007 13:36:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to c_str gib komische sachen zurück on Fri, 16 Mar 2007 13:36:44 GMT]]></title><description><![CDATA[<p>Also ich hab folgenes Problem: Ich habe eine Funktion<br />
die einen &quot;char*&quot; zurück gibt. in dieser Funktion<br />
verwende ich einen &quot;C++ String&quot;, setzte diesen und mache<br />
dann ein return mit c_str()!Aber c_str haut völligen<br />
quatsch raus!Ich habe das gefühl das er einfach irgendwo<br />
im Speicher liest nur nicht meinen String.</p>
<pre><code class="language-cpp">std::string TestLib::strFoo(std::string para)
{
	para.append(&quot;++&quot;);

	return para;
}

extern &quot;C&quot;
{

	char *TestFoo()
	{
		TestLib *objTest = new TestLib();

		std::string strTest = objTest-&gt;strFoo(&quot;Hello&quot;);

		char *chTest = const_cast&lt;char *&gt;(strTest.c_str());

		return chTest;
	}

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1246708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246708</guid><dc:creator><![CDATA[Basingstoke]]></dc:creator><pubDate>Fri, 16 Mar 2007 13:36:44 GMT</pubDate></item><item><title><![CDATA[Reply to c_str gib komische sachen zurück on Fri, 16 Mar 2007 13:42:46 GMT]]></title><description><![CDATA[<p>strTest.c_str() gibt einen Zeiger auf die Daten zurück, die von strTest verwaltet werden. Am Ende der Funktion wird strTest gelöscht und damit der Speicherbereich auch frei gegeben. Der vorher zurückgelieferte Zeiger zeigt also nach der Funktion auf nicht mehr gültigen Speicher.</p>
<p>Tntnet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1246711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246711</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Fri, 16 Mar 2007 13:42:46 GMT</pubDate></item><item><title><![CDATA[Reply to c_str gib komische sachen zurück on Fri, 16 Mar 2007 13:44:23 GMT]]></title><description><![CDATA[<p>Basingstoke schrieb:</p>
<blockquote>
<p>Ich habe das gefühl das er einfach irgendwo<br />
im Speicher liest nur nicht meinen String.</p>
</blockquote>
<p>Warum sollte er (wer?) das tun? ich würde dir allerding empfehlen eine referenz/pointer an die erste funktion zu übergeben (und diese natürlich auch zurückgeben lassen) und der cast ist nicht notwendig, da c_str() schon char zurückgibt, also ist auch die Variable nicht notwendig, einfach return strTest.c_str().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1246712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246712</guid><dc:creator><![CDATA[larz]]></dc:creator><pubDate>Fri, 16 Mar 2007 13:44:23 GMT</pubDate></item><item><title><![CDATA[Reply to c_str gib komische sachen zurück on Fri, 16 Mar 2007 13:46:07 GMT]]></title><description><![CDATA[<p>Du hast ja auch nur ein temproräres strTest. Soll heißen, du hast nirgends ein dynamischen C-String angelegt. c_str liefert dir keinen dynamischen String zurück, sonst müsste man diesen ja immer selber mit delete löschen. Sobald TestFoo() verlassen wird, ist der Return von c_str undefiniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1246713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246713</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 16 Mar 2007 13:46:07 GMT</pubDate></item><item><title><![CDATA[Reply to c_str gib komische sachen zurück on Fri, 16 Mar 2007 13:45:16 GMT]]></title><description><![CDATA[<p>Ehm... keine Ahnung, aber ist C++-Code in extern &quot;C&quot; überhaupt möglich? <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="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1246715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246715</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 16 Mar 2007 13:45:16 GMT</pubDate></item><item><title><![CDATA[Reply to c_str gib komische sachen zurück on Fri, 16 Mar 2007 14:16:15 GMT]]></title><description><![CDATA[<p>Ja es ist möglich...es geht darum das diese Funktion &quot;C&quot;-Konform<br />
kompiliert wird...es soll eine schnittstelle für C sein...</p>
<p>@larz:der cast ist notwendig, weil c_str() einen &quot;const char *&quot;<br />
zurück gibt</p>
<p>aber ich hab wirklich etwas gepennt!mit dem pointer!</p>
<p>danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1246723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246723</guid><dc:creator><![CDATA[Basingstoke]]></dc:creator><pubDate>Fri, 16 Mar 2007 14:16:15 GMT</pubDate></item></channel></rss>