<?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[alle operator&amp;lt;&amp;lt;&#x27;s von ostringstream überschreiben]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe folgendes Problem:</p>
<p>Ich habe eine Klasse, die von ostringstream ableitet. Diese Klasse kann ich nun per <code>Objektderklasse &lt;&lt; &quot;hallo&quot; &lt;&lt; 1 &lt;&lt; endl;</code> ansprechen, was auch super funktioniert. Nur leider will ich jetzt den geerbten operator&lt;&lt; dieser klasse so überschreiben, dass er je nach zustand der klasse die übergebenen Daten woanders hinschreibt (ich habe eigene streambuf-objekte, und der operator soll jeweils in einem std::bitset nachlesen, in welche dieser objekte er reinschreiben soll).<br />
Ich habe bereits versucht, den geerbten operator&lt;&lt; mit einem funktionstemplate</p>
<pre><code>template&lt;class T&gt;
ostream&amp; operator&lt;&lt;(T)
</code></pre>
<p>zu überschreiben, aber das hat verständlicherweise nicht funktioniert, da er dann z.B. c-strings als char* interpretiert (was sie ja auch sind :)) und lediglich deren adresse ausgibt.</p>
<p>Jetzt ist meine Frage, wie ich das Problem lösen kann. Muss ich alle 20(?) verschiedenen operator&lt;&lt;(xyz) der klasse ostream überschreiben oder gibt es eine bessere(elegantere möglichkeit)?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/222030/alle-operator-lt-lt-s-von-ostringstream-überschreiben</link><generator>RSS for Node</generator><lastBuildDate>Mon, 05 Oct 2026 09:50:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/222030.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 06 Sep 2008 16:31:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to alle operator&amp;lt;&amp;lt;&#x27;s von ostringstream überschreiben on Sat, 06 Sep 2008 16:31:08 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe folgendes Problem:</p>
<p>Ich habe eine Klasse, die von ostringstream ableitet. Diese Klasse kann ich nun per <code>Objektderklasse &lt;&lt; &quot;hallo&quot; &lt;&lt; 1 &lt;&lt; endl;</code> ansprechen, was auch super funktioniert. Nur leider will ich jetzt den geerbten operator&lt;&lt; dieser klasse so überschreiben, dass er je nach zustand der klasse die übergebenen Daten woanders hinschreibt (ich habe eigene streambuf-objekte, und der operator soll jeweils in einem std::bitset nachlesen, in welche dieser objekte er reinschreiben soll).<br />
Ich habe bereits versucht, den geerbten operator&lt;&lt; mit einem funktionstemplate</p>
<pre><code>template&lt;class T&gt;
ostream&amp; operator&lt;&lt;(T)
</code></pre>
<p>zu überschreiben, aber das hat verständlicherweise nicht funktioniert, da er dann z.B. c-strings als char* interpretiert (was sie ja auch sind :)) und lediglich deren adresse ausgibt.</p>
<p>Jetzt ist meine Frage, wie ich das Problem lösen kann. Muss ich alle 20(?) verschiedenen operator&lt;&lt;(xyz) der klasse ostream überschreiben oder gibt es eine bessere(elegantere möglichkeit)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1577724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1577724</guid><dc:creator><![CDATA[Heinzelotto]]></dc:creator><pubDate>Sat, 06 Sep 2008 16:31:08 GMT</pubDate></item><item><title><![CDATA[Reply to alle operator&amp;lt;&amp;lt;&#x27;s von ostringstream überschreiben on Sat, 06 Sep 2008 17:15:48 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt;class T&gt;
MyStream&amp; operator&lt;&lt;(const T&amp; v)
{
    static_cast&lt; std::ostringstream&amp; &gt;( *this ) &lt;&lt; v;
    return *this;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1577744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1577744</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 06 Sep 2008 17:15:48 GMT</pubDate></item><item><title><![CDATA[Reply to alle operator&amp;lt;&amp;lt;&#x27;s von ostringstream überschreiben on Sun, 07 Sep 2008 01:19:03 GMT]]></title><description><![CDATA[<p>erstaunlich, das hat funktioniert, auch wenn ich mir nicht erklären kann, wieso er jetzt plötzlich die c-strings als solche ausgibt und nicht mehr nur als adressen der char*</p>
<p>danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1577886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1577886</guid><dc:creator><![CDATA[Heinzelotto]]></dc:creator><pubDate>Sun, 07 Sep 2008 01:19:03 GMT</pubDate></item><item><title><![CDATA[Reply to alle operator&amp;lt;&amp;lt;&#x27;s von ostringstream überschreiben on Mon, 08 Sep 2008 08:50:38 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Heinzelotto schrieb:</p>
<blockquote>
<p>auch wenn ich mir nicht erklären kann, wieso er jetzt plötzlich die c-strings als solche ausgibt und nicht mehr nur als adressen der char*</p>
</blockquote>
<p>Weil es einen Unterschied macht, ob ein <em>const char</em>* oder ein <em>char</em>* ausgegeben werden soll. Für beide wird jeweils eine andere Funktion aufgerufen, eine, die Zeiger (jeglicher) Art annimmt, und deswegen sinnvollerweise nur den Zeigerwert ausgeben kann, und eine, die wirklich <em>const char</em>* erwartet, so dass dann die &quot;übliche&quot; Zeichenketteninterpretation stattfinden kann. Hier muss man sich im Klaren darüber sein, dass ein Zeichenkettenliteral wie &quot;hallo&quot; als <em>const char</em>* anzusehen ist.</p>
<p>MfG,</p>
<p>Probe-Nutzer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1578445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1578445</guid><dc:creator><![CDATA[Probe-Nutzer]]></dc:creator><pubDate>Mon, 08 Sep 2008 08:50:38 GMT</pubDate></item></channel></rss>