<?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[Streams]]></title><description><![CDATA[<p>Ich möchte gerne meine Programmausgabe entweder nach cout oder in eine Datei schreiben. Dazu habe ich folgendes ausprobiert:</p>
<pre><code class="language-cpp">// Minimalbeispiel
#include &lt;iostream&gt;
#include &lt;fstream&gt;

void foo(const char* filename)
{
  std::ostream&amp; out = std::cout;
  std::ofstream fout;
  if(filename != 0) {
    fout.open(filename);
    out = fout;
  }

  out &lt;&lt; &quot;Holla!&quot; &lt;&lt; std::endl;

}

int main()
{
  foo(0);
  foo(&quot;test.txt&quot;)

  return 0;
}
</code></pre>
<p>Das fliegt mir aber um die Ohren; wie kann ich das reparieren bzw. wie kann ich das anders lösen?</p>
<pre><code>/usr/include/c++/4.2.1/bits/ios_base.h: In member function ‘std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;::operator=(const std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;&amp;)’:
/usr/include/c++/4.2.1/bits/ios_base.h:782: error: ‘std::ios_base&amp; std::ios_base::operator=(const std::ios_base&amp;)’ is private
/usr/include/c++/4.2.1/iosfwd:55: error: within this context
/usr/include/c++/4.2.1/iosfwd: In member function ‘std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;::operator=(const std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;)’:
/usr/include/c++/4.2.1/iosfwd:64: note: synthesized method ‘std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;::operator=(const std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;&amp;)’ first required here
stream.cpp: In function ‘void foo(const char*)’:
stream.cpp:10: note: synthesized method ‘std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;::operator=(const std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;)’ first required here
stream.cpp: In function ‘int main()’:
stream.cpp:22: error: expected `;' before ‘return’
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/259772/streams</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 17:17:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/259772.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 27 Jan 2010 15:17:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Streams on Wed, 27 Jan 2010 15:17:58 GMT]]></title><description><![CDATA[<p>Ich möchte gerne meine Programmausgabe entweder nach cout oder in eine Datei schreiben. Dazu habe ich folgendes ausprobiert:</p>
<pre><code class="language-cpp">// Minimalbeispiel
#include &lt;iostream&gt;
#include &lt;fstream&gt;

void foo(const char* filename)
{
  std::ostream&amp; out = std::cout;
  std::ofstream fout;
  if(filename != 0) {
    fout.open(filename);
    out = fout;
  }

  out &lt;&lt; &quot;Holla!&quot; &lt;&lt; std::endl;

}

int main()
{
  foo(0);
  foo(&quot;test.txt&quot;)

  return 0;
}
</code></pre>
<p>Das fliegt mir aber um die Ohren; wie kann ich das reparieren bzw. wie kann ich das anders lösen?</p>
<pre><code>/usr/include/c++/4.2.1/bits/ios_base.h: In member function ‘std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;::operator=(const std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;&amp;)’:
/usr/include/c++/4.2.1/bits/ios_base.h:782: error: ‘std::ios_base&amp; std::ios_base::operator=(const std::ios_base&amp;)’ is private
/usr/include/c++/4.2.1/iosfwd:55: error: within this context
/usr/include/c++/4.2.1/iosfwd: In member function ‘std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;::operator=(const std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;)’:
/usr/include/c++/4.2.1/iosfwd:64: note: synthesized method ‘std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;::operator=(const std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;&amp;)’ first required here
stream.cpp: In function ‘void foo(const char*)’:
stream.cpp:10: note: synthesized method ‘std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;::operator=(const std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;)’ first required here
stream.cpp: In function ‘int main()’:
stream.cpp:22: error: expected `;' before ‘return’
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1845804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1845804</guid><dc:creator><![CDATA[Mups]]></dc:creator><pubDate>Wed, 27 Jan 2010 15:17:58 GMT</pubDate></item><item><title><![CDATA[Reply to Streams on Wed, 27 Jan 2010 15:41:46 GMT]]></title><description><![CDATA[<p>Also ich programmiere auch noch nicht so sehr lange mit c++, also falls ich was falsches sag schonmal sorry.</p>
<p>aber erst mal ne frage...du hast schon erst mal bevor du den code reinkopierst dir deine compiler fehlermeldungen durchgeschaut und geguckt an was es legen könnte???<br />
denn dann wär dir erst mal aufgefallen dass du dass &quot;;&quot; in Zeile 21 vergessen hast.</p>
<p>Also so wie ich das kenne mit dem streams und ein und ausgaben in und von dateien, ist das komplett falsche bzw kenn ich nicht.<br />
was genau willst du machen?<br />
du willst ein programm dass etwas in eine datei schreibt oder auf dem bildschirm ausgibt???<br />
was heißt bei dir das oder?</p>
<p>sorry falls ich es falsch verstanden hab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1845818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1845818</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Wed, 27 Jan 2010 15:41:46 GMT</pubDate></item><item><title><![CDATA[Reply to Streams on Wed, 27 Jan 2010 15:54:52 GMT]]></title><description><![CDATA[<p>fr33g schrieb:</p>
<blockquote>
<p>denn dann wär dir erst mal aufgefallen dass du dass &quot;;&quot; in Zeile 21 vergessen hast.</p>
</blockquote>
<p>Das war ein copy-paste-Fehler und nicht der Fehler, den ich suche.</p>
<p>fr33g schrieb:</p>
<blockquote>
<p>du willst ein programm dass etwas in eine datei schreibt oder auf dem bildschirm ausgibt???<br />
was heißt bei dir das oder?</p>
</blockquote>
<p>Genau das: Entwder Ausgabe in eine Datei, oder nach cout. In diesem Beispiel wird soll das unterschieden werden, je nachdem, ob filename ein Null-Pointer ist oder nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1845829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1845829</guid><dc:creator><![CDATA[Mups]]></dc:creator><pubDate>Wed, 27 Jan 2010 15:54:52 GMT</pubDate></item><item><title><![CDATA[Reply to Streams on Wed, 27 Jan 2010 15:56:41 GMT]]></title><description><![CDATA[<p>Falls es einfacher zu lesen ist, nochmal die Fehlermeldung mit dem ; hinter foo(...):</p>
<pre><code>/usr/include/c++/4.2.1/bits/ios_base.h: In member function ‘std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;::operator=(const std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;&amp;)’:
/usr/include/c++/4.2.1/bits/ios_base.h:782: error: ‘std::ios_base&amp; std::ios_base::operator=(const std::ios_base&amp;)’ is private
/usr/include/c++/4.2.1/iosfwd:55: error: within this context
/usr/include/c++/4.2.1/iosfwd: In member function ‘std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;::operator=(const std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;)’:
/usr/include/c++/4.2.1/iosfwd:64: note: synthesized method ‘std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;::operator=(const std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;&amp;)’ first required here
stream.cpp: In function ‘void foo(const char*)’:
stream.cpp:11: note: synthesized method ‘std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;::operator=(const std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;)’ first required here
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1845831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1845831</guid><dc:creator><![CDATA[Mups]]></dc:creator><pubDate>Wed, 27 Jan 2010 15:56:41 GMT</pubDate></item><item><title><![CDATA[Reply to Streams on Wed, 27 Jan 2010 15:59:43 GMT]]></title><description><![CDATA[<p>Ah, verdammt... ich glaube, ich begreife. out ist eine Referenz auf std::cout. Mit der Zuweisung versuche ich, meinen file-Stream std::cout zuzuweisen. Das ist natürlich unsinn. Ich könnte das einfach mit einem Pointer auf einen ostream machen... dann kann ich die Adresse ändern. Nur der Syntax wird dann weniger hübsch.. dann muss ich immer sowas schreiben wie</p>
<pre><code class="language-cpp">(*out) &lt;&lt; &quot;Mein Text&quot; &lt;&lt; std::endl;
</code></pre>
<p>Habt ihr noch nen hübscheren Vorschlag? Immerhin sollte meine Idee so klappen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1845836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1845836</guid><dc:creator><![CDATA[Mups]]></dc:creator><pubDate>Wed, 27 Jan 2010 15:59:43 GMT</pubDate></item><item><title><![CDATA[Reply to Streams on Wed, 27 Jan 2010 16:03:19 GMT]]></title><description><![CDATA[<p>Nimm einen Pointer statt einer Referenz, dann gehts:</p>
<pre><code class="language-cpp">void foo(const char* filename)
{
  std::ostream* out = &amp;std::cout;
  std::ofstream fout;
  if(filename != 0) {
    fout.open(filename);
    out = &amp;fout;
  }
  *out &lt;&lt; &quot;Holla!&quot; &lt;&lt; std::endl;
}
</code></pre>
<p>Wie die Fehlermeldung schon sagt, ist der Zuweisungsoperator (operator=) private, d.h. du kannst streams nicht einander zuweisen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1845838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1845838</guid><dc:creator><![CDATA[Blue-Tiger]]></dc:creator><pubDate>Wed, 27 Jan 2010 16:03:19 GMT</pubDate></item><item><title><![CDATA[Reply to Streams on Wed, 27 Jan 2010 16:13:11 GMT]]></title><description><![CDATA[<p>Mups schrieb:</p>
<blockquote>
<p>Ich möchte gerne meine Programmausgabe entweder nach cout oder in eine Datei schreiben.</p>
</blockquote>
<p>guckst Du <a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-842769.html#842769" rel="nofollow">hier (schreiben nach cout UND in Datei)</a> oder <a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-1439418.html#1439418" rel="nofollow">hier (Umleiten von cout in eine Listbox)</a> oder <a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-1321800.html#1321800" rel="nofollow">hier (cout nach Memory umleiten)</a>.<br />
Ersetze beim letzten Beispiel den MemBuf durch den filebuf des ofstreams - dann hast Du das was Du brauchst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1845844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1845844</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Wed, 27 Jan 2010 16:13:11 GMT</pubDate></item><item><title><![CDATA[Reply to Streams on Wed, 27 Jan 2010 18:58:49 GMT]]></title><description><![CDATA[<p>Mups schrieb:</p>
<blockquote>
<p>fr33g schrieb:</p>
<blockquote>
<p>denn dann wär dir erst mal aufgefallen dass du dass &quot;;&quot; in Zeile 21 vergessen hast.</p>
</blockquote>
<p>Das war ein copy-paste-Fehler und nicht der Fehler, den ich suche.</p>
<p>fr33g schrieb:</p>
<blockquote>
<p>du willst ein programm dass etwas in eine datei schreibt oder auf dem bildschirm ausgibt???<br />
was heißt bei dir das oder?</p>
</blockquote>
<p>Genau das: Entwder Ausgabe in eine Datei, oder nach cout. In diesem Beispiel wird soll das unterschieden werden, je nachdem, ob filename ein Null-Pointer ist oder nicht.</p>
</blockquote>
<p>ich wollte damit ja auch nicht sagen dass dass der fehler ist, sondern einer der fehler, und wenn sein compiler fehler meldet, schaut man sie sich ja normal erst mal an, und dachte das wär dir dann ja aufgefallen;-)<br />
aber ist ja jetzt egal:D<br />
dein prob ist ja gelöst;-)</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1845946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1845946</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Wed, 27 Jan 2010 18:58:49 GMT</pubDate></item><item><title><![CDATA[Reply to Streams on Wed, 27 Jan 2010 19:03:41 GMT]]></title><description><![CDATA[<p>oder so:</p>
<pre><code class="language-cpp">void foo(std::ostream&amp; out)
{
   out &lt;&lt; &quot;Holla!&quot; &lt;&lt; std::endl; 
}

void foo(const char* filename)
{ 
  if(filename != 0)
  {
    std::ofstream fout(filename);
    foo(fout);
  }
  else
  {
    foo(std::cout);
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1845949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1845949</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Wed, 27 Jan 2010 19:03:41 GMT</pubDate></item></channel></rss>