PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ stdout-Weiche


Gast
2007-06-16, 20:40:09
Hallo,

ich möchte gern in C++ eine stdout Weiche schreiben. Wenn mein Programm ohne Parameter aufgerufen wird, soll alles auf std::cout geschrieben werden. Bei einem Parameter, soll der Parameter der Dateiname sein, in die alles geschrieben werden soll.

Nur weiß ich nicht, wie das am besten geht. Ich muss irgendwie ostream entweder nach cout oder in eine Datei umleiten...

std::ostream &ostr;
if(argc == 2) {
ostr = std::cout;
} else {
ostr.open(argv[2]);
}

Kann wer helfen?

Gast
2007-06-16, 20:54:02
warum willst du das überhaupt direkt in das programm einbauen? umleitung von stdout in eine datei lässt sich doch bei bedarf direkt von der shell erledigen...

Gast
2007-06-17, 01:30:23
Die Idee ist es, dass es zwei Möglichkeiten gibt das Program auszuführen:

program ohne Argumente:
Resultat wird auf stdout zurückgegeben

program mit Argument file:
Resultat wird in Datei geschrieben
Auf stdout kommen Statusmeldungen

ScottManDeath
2007-06-17, 03:24:35
Du könntest Statusmeldungen nach stderr ausgeben und das Resultat nach stdout. Dann kannst Du stdout in die Datei pipen, die Fehlermeldungen usw kommen dann an die Konsole...

Gast
2007-06-17, 11:53:40
So mach ich es gerade auch, aber es ist nicht schön, da über stderr auch Fehlermeldungen kommen. Und wenn keine Dateiargument übergeben wird, vermischen sich stdout und stderr, ausser ich leite eins davon um.

Mir ist schon klar, dass der Benutzer Ein- und Ausgabe umleiten kann. Aber das Programm soll schon einen Teil davon unterstützen. Muss doch irgendwie machbar sein...

DaEmpty
2007-06-17, 13:48:27
Muss doch irgendwie machbar sein...

Kapsel doch einfach die Ausgabefunktionalität...