<?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[implizite Umwandlung von std::string zu const char *]]></title><description><![CDATA[<p>Hallo,</p>
<p>kann man std::string implizit zu const char * umwandeln lassen? Also Beispiel Funktion erwartet Argument const char *, ich habe aber einen std::string, kann dann der Compiler std::string::c_str() automatisch ersetzen?</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">try {
  throw std::string(&quot;fehler&quot;);
} catch (const char * e) {
  std::cerr &lt;&lt; e &lt;&lt; std::endl;
}
</code></pre>
<p>Sprich ich weiß an dieser Stelle nicht was geworfen wird, außer dass es ein String sein muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/272908/implizite-umwandlung-von-std-string-zu-const-char</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 13:29:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/272908.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 27 Aug 2010 12:15:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to implizite Umwandlung von std::string zu const char * on Fri, 27 Aug 2010 12:15:59 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>kann man std::string implizit zu const char * umwandeln lassen? Also Beispiel Funktion erwartet Argument const char *, ich habe aber einen std::string, kann dann der Compiler std::string::c_str() automatisch ersetzen?</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">try {
  throw std::string(&quot;fehler&quot;);
} catch (const char * e) {
  std::cerr &lt;&lt; e &lt;&lt; std::endl;
}
</code></pre>
<p>Sprich ich weiß an dieser Stelle nicht was geworfen wird, außer dass es ein String sein muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1945011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1945011</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Fri, 27 Aug 2010 12:15:59 GMT</pubDate></item><item><title><![CDATA[Reply to implizite Umwandlung von std::string zu const char * on Fri, 27 Aug 2010 12:17:39 GMT]]></title><description><![CDATA[<blockquote>
<p>kann man std::string implizit zu const char * umwandeln lassen? Also Beispiel Funktion erwartet Argument const char *, ich habe aber einen std::string, kann dann der Compiler std::string::c_str() automatisch ersetzen?</p>
</blockquote>
<p>Nein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1945013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1945013</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Fri, 27 Aug 2010 12:17:39 GMT</pubDate></item><item><title><![CDATA[Reply to implizite Umwandlung von std::string zu const char * on Fri, 27 Aug 2010 12:21:28 GMT]]></title><description><![CDATA[<p>Okay danke. Rein interessehalber wenn man den Casting-Operator entsprechend überlädt, funktioniert es dann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1945016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1945016</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Fri, 27 Aug 2010 12:21:28 GMT</pubDate></item><item><title><![CDATA[Reply to implizite Umwandlung von std::string zu const char * on Fri, 27 Aug 2010 13:11:17 GMT]]></title><description><![CDATA[<p>Ja. Aber CastOps sind eigentlich nie wirklich eine gute Idee. Damit stellt man sich einfach zu gerne ein Bein.</p>
<p>zB</p>
<pre><code class="language-cpp">std::string s;
if(s)
</code></pre>
<p>(Aus dem Grund sind die impliziten bool-Konvertierungen zB bei den boost Smartpointern so umständlich. In C++0x wird aber alles besser: <a href="http://en.wikipedia.org/wiki/C%2B%2B0x#Explicit_conversion_operators" rel="nofollow">http://en.wikipedia.org/wiki/C%2B%2B0x#Explicit_conversion_operators</a> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1945037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1945037</guid><dc:creator><![CDATA[unbekannt101]]></dc:creator><pubDate>Fri, 27 Aug 2010 13:11:17 GMT</pubDate></item><item><title><![CDATA[Reply to implizite Umwandlung von std::string zu const char * on Fri, 27 Aug 2010 13:44:45 GMT]]></title><description><![CDATA[<p>Es gibt keine Casting Operatoren, es gibt nur Konvertierungs-Operatoren.<br />
Und die kann man nicht überladen, gibt ja auch nix zu überladen.<br />
Und deklarieren kann man sie nur innerhalb der Klasse.<br />
Du müsstest also den Code vom std::string ändern, und das &quot;tut man nicht&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1945051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1945051</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 27 Aug 2010 13:44:45 GMT</pubDate></item><item><title><![CDATA[Reply to implizite Umwandlung von std::string zu const char * on Fri, 27 Aug 2010 13:58:41 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Es gibt keine Casting Operatoren, es gibt nur Konvertierungs-Operatoren.</p>
</blockquote>
<p>Das sollte ich mir wohl mal genauer ansehen. Mir ist nicht so klar, was du mit dieser Aussage genau sagen willst.</p>
<blockquote>
<p>Und die kann man nicht überladen, gibt ja auch nix zu überladen.</p>
</blockquote>
<p>Es scheitert sicher auch hier an meiner Unwissenheit, aber folgende Methode hat man mir als Casting-Operator beigebracht:</p>
<pre><code class="language-cpp">class Foo
{
  Bar bar();
  operator Bar()
  {
    return bar();
  }
}
</code></pre>
<blockquote>
<p>Und deklarieren kann man sie nur innerhalb der Klasse.<br />
Du müsstest also den Code vom std::string ändern, und das &quot;tut man nicht&quot;.</p>
</blockquote>
<p>Ich glaube ich komme dir schon näher, aber das wollte ich auch nicht, deswegen ja auch interessehalber.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1945057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1945057</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Fri, 27 Aug 2010 13:58:41 GMT</pubDate></item><item><title><![CDATA[Reply to implizite Umwandlung von std::string zu const char * on Fri, 27 Aug 2010 14:46:47 GMT]]></title><description><![CDATA[<p>Nick Unbekannt schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Es gibt keine Casting Operatoren, es gibt nur Konvertierungs-Operatoren.</p>
</blockquote>
<p>Das sollte ich mir wohl mal genauer ansehen. Mir ist nicht so klar, was du mit dieser Aussage genau sagen willst.</p>
</blockquote>
<p>OK, ist natürlich so wie es dasteht falsch.</p>
<p>Klar gibt es casting Operatoren, aber die kann man nicht überladen und auch nicht definieren, die sind einfach eingebaut.</p>
<p>Das was man definieren kann nennt sich &quot;conversion operator&quot;.</p>
<p>Das wollte ich damit sagen.</p>
<p>Nick Unbekannt schrieb:</p>
<blockquote>
<p>folgende Methode hat man mir als Casting-Operator beigebracht:</p>
<pre><code class="language-cpp">class Foo
{
  Bar bar();
  operator Bar()
  {
    return bar();
  }
}
</code></pre>
</blockquote>
<p>Jo, das &quot;operator Bar&quot; Ding ist ein sog. &quot;conversion operator&quot;.</p>
<p>Ich hab aber grad kurz gegoogelt. Scheint nicht unüblich zu sein das Deklarieren von &quot;conversion operators&quot; als &quot;overloading the cast operator(s)&quot; zu bezeichnen. Ich finde es allerdings falsch/ungenau.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1945075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1945075</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 27 Aug 2010 14:46:47 GMT</pubDate></item></channel></rss>