Schreiben aller Programmausgaben in eine TXT-Datei in C ++

7

Ich muss meine gesamte Programmausgabe in eine Textdatei schreiben. Ich glaube, es ist so gemacht,

%Vor%

wobei sOutFile das ofstream-Objekt ist, das die Datei wie folgt erstellt:

%Vor%

Wenn ich das stdout in das Objekt sOutFile einfüge, erhalte ich Code, der dem oktalen [hexadezimalen] Code oder einer Art von Adresse in der von mir erstellten Textdatei ähnelt.

> %Vor%

Aber was mich verwirrt ist, dass ich in meinem Programm cout mehrmals benutze. Meist nur wörtliche Aussage. Wenn ich mich nicht irre, ist das die Programmausgabe.

Wenn dieser Code eine Adresse ist, würde er meine gesamte Ausgabe enthalten? Könnte ich es wieder in das Programm einlesen und es herausfinden?

Was kann ich tun, um ALLE meine Programmausgabe in eine Textdatei geschrieben zu bekommen?

    
user40120 22.02.2009, 07:50
quelle

5 Antworten

7

Dies ist ein Duplikat von: diese Frage

Sie können stdout, stderr und stdin mit std::freopen umleiten.

Von dem obigen Link:

%Vor%

Sie können Ihr Programm auch wie folgt über die Eingabeaufforderung ausführen:

%Vor%     
Brian R. Bondy 22.02.2009, 08:01
quelle
15

Wenn Ihr Programm bereits cout / printf verwendet und Sie ALLES, was Sie gerade ausgeben, an eine Datei senden wollen, können Sie einfach stdout umleiten, um auf eine Datei vor Ihren bestehenden Aufrufen zu zeigen: Ссылка

Relevanter Code:

%Vor%

Alternativ, wenn Sie nur einige Dinge in eine Datei drucken möchten, möchten Sie nur einen regulären Datei-Output-Stream: Ссылка

Relevanter Code:

%Vor%

BEARBEITEN, um Antworten von John T. und Brian Bondy zu aggregieren:
Wenn Sie es über die Befehlszeile ausführen, können Sie die Ausgabe einfach umleiten, wie alle anderen Benutzer auch, indem Sie den Umleitungsoperator "& gt;" oder anhängen "& gt; & gt;":

%Vor%     
Andrew Coleson 22.02.2009 07:53
quelle
6

Wenn Sie alle Ausgaben in einer Textdatei haben möchten, müssen Sie nichts extra codieren.

über die Befehlszeile:

%Vor%

Wenn Sie nur bestimmte Ausgaben umleiten möchten, können Sie ostream wie vorgeschlagen verwenden.

    
John T 22.02.2009 07:53
quelle
3

Dann können Sie std :: cout nirgendwo anders verwenden, um Zeug aus Ihrem Programm zu drucken. Ändern Sie std :: cout in einen std :: ostream und übergeben Sie Ihre Datei oder std :: cout nach Bedarf.

    
dirkgently 22.02.2009 07:54
quelle
3
%Vor%

in C " stdout " ist definiert als FILE* Variable. Es ist nur ein Zeiger. Wenn Sie es in eine Datei ausgeben, wird nur der Wert des Zeigers geschrieben, in Ihrem Fall: 0x77c5fca0 in die Datei.

Wenn Sie Ihre Ausgabe in eine Datei umleiten möchten, schreiben Sie sie entweder an die erste Stelle oder leiten Sie die Ausgabe Ihres Programms über die Befehlszeile in eine Datei um.

    
shoosh 22.02.2009 07:59
quelle

Tags und Links