<?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[[dasmussso] Keine Ausgabe bei cout in Konsole, Umleitung in Datei funktioniert dagegen tadellos]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe ein Programm vor mir, das mich strikt monoton steigend zur Weißglut treibt.</p>
<p>Der Quellcode ist historisch gewachsen, wobei das Programm selbst grundsätzlich macht, was es soll.</p>
<p>Nun habe ich an den Anfang eine banale Möglichkeit zur Abfrage der Version setzen wollen. Doch selbst wenn ich die <code>main.cpp</code> auf folgenden Schnipsel kürze und in der Konsole <code>Programm.exe -v</code> aufrufe, sehe ich nada. Wenn ich die Ausgabe dagegen in eine Datei umleite ( <code>Programm.exe -v &gt; out.txt</code> ), erhalte ich alles.</p>
<pre><code>#include &lt;iostream&gt;

int main( int argc, char *argv[] )
{
	// print version
	if( argc == 2 )
	{
		std::string sArg( argv[1] );
		if( sArg.compare( &quot;-v&quot; ) == 0 )
		{
			std::cout &lt;&lt; &quot;\n&gt;&gt;&gt; Program version 3.5\n&quot; &lt;&lt; std::endl;
			return 0;
		}
	}
}
</code></pre>
<p>Ich suche seit gut drei Stunden, aber finde nur Beiträge, wo Leute kein <code>\n</code> oder <code>endl</code> verwenden und die Ausgabe deshalb gepuffert und nicht angezeigt wird. %SUCHMASCHINE% schlägt mir auch tausende Beiträge vor, wie man <code>cout</code> und <code>cerr</code> in Dateien umlenkt, usw. Alles nur Treffer, die mich nicht weiterbringen.</p>
<p>Es handelt sich um ein Programm, das u.a. auch <em>Qt</em> nutzt. In einem Suchergebnis war davon die Rede, dass <em>Qt</em> <code>cout</code> irgendwie umbiegt und man Ausgaben an die Konsole mittels <code>QTextStream(stdout)</code> möglich seien. Das finde ich jetzt mäßig charmant.</p>
<p>Ich frage mich an der Stelle, ob ich <code>cout</code> nicht einfach neu aufsetzen (reinitialisieren) kann. Mir ist völlig egal, was <em>Qt</em> für Pläne mit <code>cout</code> hat. Wenn ich <code>cout</code> nutze, erwarte ich eine Ausgabe an die Konsole. Leider kenne ich die Mechanik dahinter nicht so gut und brauche Hilfe.</p>
<p>Oder gibt es eine Einstellung in <em>Qt</em>, <em>Visual Studio</em> (2010) oder eine Präprozessordefinition, die hier die Finger im Spiel haben könnte und Ausgaben an die Konsole unterbindet? (Die beiden genannten Definitionen sind vorhanden, scheinbar auch nicht grundlos).</p>
<p>Viele Grüße<br />
gelignite</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/333786/dasmussso-keine-ausgabe-bei-cout-in-konsole-umleitung-in-datei-funktioniert-dagegen-tadellos</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Apr 2026 11:38:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/333786.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 31 Jul 2015 12:40:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [dasmussso] Keine Ausgabe bei cout in Konsole, Umleitung in Datei funktioniert dagegen tadellos on Fri, 31 Jul 2015 15:26:37 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe ein Programm vor mir, das mich strikt monoton steigend zur Weißglut treibt.</p>
<p>Der Quellcode ist historisch gewachsen, wobei das Programm selbst grundsätzlich macht, was es soll.</p>
<p>Nun habe ich an den Anfang eine banale Möglichkeit zur Abfrage der Version setzen wollen. Doch selbst wenn ich die <code>main.cpp</code> auf folgenden Schnipsel kürze und in der Konsole <code>Programm.exe -v</code> aufrufe, sehe ich nada. Wenn ich die Ausgabe dagegen in eine Datei umleite ( <code>Programm.exe -v &gt; out.txt</code> ), erhalte ich alles.</p>
<pre><code>#include &lt;iostream&gt;

int main( int argc, char *argv[] )
{
	// print version
	if( argc == 2 )
	{
		std::string sArg( argv[1] );
		if( sArg.compare( &quot;-v&quot; ) == 0 )
		{
			std::cout &lt;&lt; &quot;\n&gt;&gt;&gt; Program version 3.5\n&quot; &lt;&lt; std::endl;
			return 0;
		}
	}
}
</code></pre>
<p>Ich suche seit gut drei Stunden, aber finde nur Beiträge, wo Leute kein <code>\n</code> oder <code>endl</code> verwenden und die Ausgabe deshalb gepuffert und nicht angezeigt wird. %SUCHMASCHINE% schlägt mir auch tausende Beiträge vor, wie man <code>cout</code> und <code>cerr</code> in Dateien umlenkt, usw. Alles nur Treffer, die mich nicht weiterbringen.</p>
<p>Es handelt sich um ein Programm, das u.a. auch <em>Qt</em> nutzt. In einem Suchergebnis war davon die Rede, dass <em>Qt</em> <code>cout</code> irgendwie umbiegt und man Ausgaben an die Konsole mittels <code>QTextStream(stdout)</code> möglich seien. Das finde ich jetzt mäßig charmant.</p>
<p>Ich frage mich an der Stelle, ob ich <code>cout</code> nicht einfach neu aufsetzen (reinitialisieren) kann. Mir ist völlig egal, was <em>Qt</em> für Pläne mit <code>cout</code> hat. Wenn ich <code>cout</code> nutze, erwarte ich eine Ausgabe an die Konsole. Leider kenne ich die Mechanik dahinter nicht so gut und brauche Hilfe.</p>
<p>Oder gibt es eine Einstellung in <em>Qt</em>, <em>Visual Studio</em> (2010) oder eine Präprozessordefinition, die hier die Finger im Spiel haben könnte und Ausgaben an die Konsole unterbindet? (Die beiden genannten Definitionen sind vorhanden, scheinbar auch nicht grundlos).</p>
<p>Viele Grüße<br />
gelignite</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2461821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2461821</guid><dc:creator><![CDATA[gelignite]]></dc:creator><pubDate>Fri, 31 Jul 2015 15:26:37 GMT</pubDate></item><item><title><![CDATA[Reply to [dasmussso] Keine Ausgabe bei cout in Konsole, Umleitung in Datei funktioniert dagegen tadellos on Fri, 31 Jul 2015 12:55:05 GMT]]></title><description><![CDATA[<p>Tritt der Fehler schon bei dem gezeigten Beispiel auf oder nur wenn Qt im Spiel ist? Ich benutze Qt nicht, könnte mir aber schon vorstellen, dass die cout umbiegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2461822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2461822</guid><dc:creator><![CDATA[sebi707]]></dc:creator><pubDate>Fri, 31 Jul 2015 12:55:05 GMT</pubDate></item><item><title><![CDATA[Reply to [dasmussso] Keine Ausgabe bei cout in Konsole, Umleitung in Datei funktioniert dagegen tadellos on Fri, 31 Jul 2015 13:20:29 GMT]]></title><description><![CDATA[<p>gelignite schrieb:</p>
<blockquote>
<p>Doch selbst wenn ich die <code>main.cpp</code> auf folgenden Schnipsel kürze und in der Konsole <code>Programm.exe -v</code> aufrufe, sehe ich nada.</p>
</blockquote>
<p>Ich nehme das VS-Projekt und kürze darin die <code>main.cpp</code> auf den gezeigten Inhalt.</p>
<p>In der Projektmappe befindet sich noch ein zweites Projekt. Dort tritt das Phänomen nicht auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2461823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2461823</guid><dc:creator><![CDATA[gelignite]]></dc:creator><pubDate>Fri, 31 Jul 2015 13:20:29 GMT</pubDate></item><item><title><![CDATA[Reply to [dasmussso] Keine Ausgabe bei cout in Konsole, Umleitung in Datei funktioniert dagegen tadellos on Fri, 31 Jul 2015 14:05:44 GMT]]></title><description><![CDATA[<p>Merke dir den streambuf mittels cout.rdbuf() bevor Qt diesen umbiegt und setze ihn vor deiner cout-Ausgabe wieder zurück, s.a. <a href="http://stackoverflow.com/questions/12184251/resetting-the-cout-after-redirection" rel="nofollow">Resetting the cout after redirection</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2461828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2461828</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Fri, 31 Jul 2015 14:05:44 GMT</pubDate></item><item><title><![CDATA[Reply to [dasmussso] Keine Ausgabe bei cout in Konsole, Umleitung in Datei funktioniert dagegen tadellos on Fri, 31 Jul 2015 14:20:29 GMT]]></title><description><![CDATA[<p>Dein Programm wird wohl als WIN32 Anwendung übersetzt. Die machen kein Konsolen-output. COUT kann aber problemlos umgeleitet werden.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2461831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2461831</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Fri, 31 Jul 2015 14:20:29 GMT</pubDate></item><item><title><![CDATA[Reply to [dasmussso] Keine Ausgabe bei cout in Konsole, Umleitung in Datei funktioniert dagegen tadellos on Fri, 31 Jul 2015 14:46:16 GMT]]></title><description><![CDATA[<p>Th69 schrieb:</p>
<blockquote>
<p>Merke dir den streambuf mittels cout.rdbuf() bevor Qt diesen umbiegt und setze ihn vor deiner cout-Ausgabe wieder zurück, s.a. <a href="http://stackoverflow.com/questions/12184251/resetting-the-cout-after-redirection" rel="nofollow">Resetting the cout after redirection</a></p>
</blockquote>
<p>Hab's probiert, klappt nicht.</p>
<pre><code>#include &lt;iostream&gt;

int main( int argc, char *argv[] )
{
	// grab stream before someone modifies it
	auto oldbuf = std::cout.rdbuf();

	// print version
	if( argc == 2 )
	{
		std::string sArg( argv[1] );
		if( sArg.compare( &quot;-v&quot; ) == 0 )
		{
			// (re)set stream to previously saved value
			std::cout.rdbuf( oldbuf );
			std::cout &lt;&lt; &quot;\n&gt;&gt;&gt; Program version 123\n&quot; &lt;&lt; std::endl;
			return 0;
		}
	}

	return 0;
}
</code></pre>
<p>Immer noch gähnende Leere in der Konsole. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /></p>
<p>mgaeckler schrieb:</p>
<blockquote>
<p>Dein Programm wird wohl als WIN32 Anwendung übersetzt.Die machen kein Konsolen-output.</p>
</blockquote>
<p>Korrekt, das Projekt ist eine Win32-Anwendung mit GUI.</p>
<p>mgaeckler schrieb:</p>
<blockquote>
<p>COUT kann aber problemlos umgeleitet werden.</p>
</blockquote>
<p>Siehe vorstehender Schnipsel - so geht die Umleitung schon mal nicht. Wie kann es umgeleitet, dass es geht? Wie eingangs erwähnt, kenne ich die Mechanik hinter dem Ganzen nicht. Naiv gedacht brauche ich einen passenden <code>std::streambuf*</code> (?), der meine Ausgabe in die Konsole malt. Aber wie sieht der aus? Ein kurzer Blick ins WWW zeigt eher kryptische Sachen, z.B. <a href="http://dslweb.nwnexus.com/~ast/dload/guicon.htm" rel="nofollow">Adding Console I/O to a Win32 GUI App</a>. Da bekommt man ja gleich Lust auf mehr.</p>
<p>Viele Grüße<br />
gelignite</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2461833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2461833</guid><dc:creator><![CDATA[gelignite]]></dc:creator><pubDate>Fri, 31 Jul 2015 14:46:16 GMT</pubDate></item><item><title><![CDATA[Reply to [dasmussso] Keine Ausgabe bei cout in Konsole, Umleitung in Datei funktioniert dagegen tadellos on Fri, 31 Jul 2015 15:05:08 GMT]]></title><description><![CDATA[<p>gelignite schrieb:</p>
<blockquote>
<p>mgaeckler schrieb:</p>
<blockquote>
<p>Dein Programm wird wohl als WIN32 Anwendung übersetzt.Die machen kein Konsolen-output.</p>
</blockquote>
<p>Korrekt, das Projekt ist eine Win32-Anwendung mit GUI.</p>
<p>mgaeckler schrieb:</p>
<blockquote>
<p>COUT kann aber problemlos umgeleitet werden.</p>
</blockquote>
<p>Siehe vorstehender Schnipsel - so geht die Umleitung schon mal nicht. Wie kann es umgeleitet, dass es geht? Wie eingangs erwähnt, kenne ich die Mechanik hinter dem Ganzen nicht. Naiv gedacht brauche ich einen passenden <code>std::streambuf*</code> (?), der meine Ausgabe in die Konsole malt. Aber wie sieht der aus? Ein kurzer Blick ins WWW zeigt eher kryptische Sachen, z.B. <a href="http://dslweb.nwnexus.com/~ast/dload/guicon.htm" rel="nofollow">Adding Console I/O to a Win32 GUI App</a>. Da bekommt man ja gleich Lust auf mehr.</p>
<p>Viele Grüße<br />
gelignite</p>
</blockquote>
<ul>
<li>Ich habe eine normale WINAPI-Anwendung geändert und via cout etwas ausgegegeben.</li>
<li>Die Anwendung habe ich aus der Eingabeausforderung gestartet.</li>
<li>habe nichts gesehen. Der Prompt kam aber sofort wieder, obwohl das Programm noch lief.</li>
<li>Anwendung nun mit xxx.exe &gt;test.txt gestartet.</li>
<li>Wieder nichts gesehen, Prompt kam wieder sofort wieder, Ausgabe wurde aber nun in Datei geschrieben.</li>
</ul>
<p>Das Verhalten hat also nichts mit QT zu tun.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2461837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2461837</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Fri, 31 Jul 2015 15:05:08 GMT</pubDate></item><item><title><![CDATA[Reply to [dasmussso] Keine Ausgabe bei cout in Konsole, Umleitung in Datei funktioniert dagegen tadellos on Fri, 31 Jul 2015 15:25:36 GMT]]></title><description><![CDATA[<p>*ieks* ein Missverständnis, da hatte ich was falsch verstanden. Ich hatte hier</p>
<p>mgaeckler schrieb:</p>
<blockquote>
<p>COUT kann aber problemlos umgeleitet werden.</p>
</blockquote>
<p>angenommen, dass man an <code>std::cout</code> was ändern kann, damit es doch in die Konsole schreibt. Mein Fehler.</p>
<p>Ne, also, deine Beschreibung ist exakt meine Beobachtung. In der Konsole kommt nichts, aber die Umleitung der Ausgabe via <code>&gt;</code> in eine Datei fördert die Ausgaben zu Tage.</p>
<p>Nun ja. Ich hatte gerade noch ein wenig weiter gesucht und gelesen. Eine Antwort war z.B. auch &quot;<em>You can't really</em>&quot;. Ich denke, ich folge der 80:20-Regel und lebe damit, dass die Ausgabe in einer Datei landen wird.</p>
<p>Danke für den Hinweis, dass WIN32-Anwendungen nicht in die Konsole schreiben. Da hätte ich sonst wohl noch länger gesucht.</p>
<p>Viele Grüße<br />
gelignite</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2461840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2461840</guid><dc:creator><![CDATA[gelignite]]></dc:creator><pubDate>Fri, 31 Jul 2015 15:25:36 GMT</pubDate></item><item><title><![CDATA[Reply to [dasmussso] Keine Ausgabe bei cout in Konsole, Umleitung in Datei funktioniert dagegen tadellos on Fri, 31 Jul 2015 15:37:21 GMT]]></title><description><![CDATA[<p><a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms681944(v=vs.85).aspx" rel="nofollow">AllocConsole</a><br />
oder<br />
<a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms681944(v=vs.85).aspx" rel="nofollow">AttachConsole</a></p>
<p>Damit siehst du dann was. Funktioniert dann aber nicht ganz so wie man es von Konsolenprogrammen erwartet -- wenn du wissen willst was ich meine: einfach ausprobieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Wenn du aber nur was sehen willst, dann sollte <code>AllocConsole</code> reichen.</p>
<p>Oder das Programm einfach auf Konsolenanwendung umstellen, und in Fällen wo du die Konsole weg haben willst einfach <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms683150(v=vs.85).aspx" rel="nofollow">ReleaseConsole</a> aufrufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2461843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2461843</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 31 Jul 2015 15:37:21 GMT</pubDate></item></channel></rss>