<?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[function_call(std::string(&amp;quot;TestString&amp;quot;).c_str()) erlaubt???]]></title><description><![CDATA[<p>naja wie bereits der titel sagt, wollte ich fragen, ob sowas &quot;sicher&quot; ist:</p>
<pre><code>void f( const char* szString )
{
  std::cout &lt;&lt; szString &lt;&lt; std::endl;
}

int main()
{
  f(std::string(&quot;TestString&quot;).c_str());
  return 0;
}
</code></pre>
<p>Das problem was ich hierbei meine ist, dass der temporäre std::string eventuell gelöscht werden kann, bevor std::cout ausgeführt wird... oder was sagt der C++ standard dazu (habe mal versucht was im standard zu finden, aber ich wusste nicht so recht nach was ich suchen musste).<br />
Denn theoretisch muss der std::string nur so lange leben, bis c_str() ausgeführt wurde, dann wird der pointer an die funktion f() übergeben, und der std::string kann doch theoretisch direkt danach sterben, oder ist es auf alle fälle garantiert, dass alle objekte die bei einem funktionsaufruf erstellt werden, so lange leben, bis die funktion beendet ist?</p>
<p>Gruß<br />
Jocker</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/239308/function_call-std-string-quot-teststring-quot-c_str-erlaubt</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 13:15:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/239308.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 21 Apr 2009 21:07:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to function_call(std::string(&amp;quot;TestString&amp;quot;).c_str()) erlaubt??? on Tue, 21 Apr 2009 21:07:56 GMT]]></title><description><![CDATA[<p>naja wie bereits der titel sagt, wollte ich fragen, ob sowas &quot;sicher&quot; ist:</p>
<pre><code>void f( const char* szString )
{
  std::cout &lt;&lt; szString &lt;&lt; std::endl;
}

int main()
{
  f(std::string(&quot;TestString&quot;).c_str());
  return 0;
}
</code></pre>
<p>Das problem was ich hierbei meine ist, dass der temporäre std::string eventuell gelöscht werden kann, bevor std::cout ausgeführt wird... oder was sagt der C++ standard dazu (habe mal versucht was im standard zu finden, aber ich wusste nicht so recht nach was ich suchen musste).<br />
Denn theoretisch muss der std::string nur so lange leben, bis c_str() ausgeführt wurde, dann wird der pointer an die funktion f() übergeben, und der std::string kann doch theoretisch direkt danach sterben, oder ist es auf alle fälle garantiert, dass alle objekte die bei einem funktionsaufruf erstellt werden, so lange leben, bis die funktion beendet ist?</p>
<p>Gruß<br />
Jocker</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1699425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1699425</guid><dc:creator><![CDATA[Jocker16]]></dc:creator><pubDate>Tue, 21 Apr 2009 21:07:56 GMT</pubDate></item><item><title><![CDATA[Reply to function_call(std::string(&amp;quot;TestString&amp;quot;).c_str()) erlaubt??? on Tue, 21 Apr 2009 21:29:17 GMT]]></title><description><![CDATA[<p>Jo, das Objekt exisitert so lange bis der Ausdruck vollständig abgearbeitet wird, d.h. das funktioniert so einwandfrei <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/1699429</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1699429</guid><dc:creator><![CDATA[Standard-Kenner]]></dc:creator><pubDate>Tue, 21 Apr 2009 21:29:17 GMT</pubDate></item></channel></rss>