簡體   English   中英

在C ++中將所有程序輸出寫入txt文件

[英]Writing ALL program output to a txt file in C++

我需要將所有程序輸出寫入文本文件。 我相信它是這樣做的,

sOutFile << stdout;

其中sOutFile是創建文件的ofstream對象,如下所示:

sOutFile("CreateAFile.txt" ); // CreateAFile.txt is created.

當我將stdout插入sOutFile對象時,我得到一些似乎相似的代碼 八進制 [十六進制]代碼或我創建的文本文件中的某種地址。

0x77c5fca0

但令我困惑的是,在我的程序中,我多次使用cout。 主要是文字陳述。 如果我沒弄錯那就是程序輸出。

如果此代碼是地址,它是否包含我的所有輸出? 我可以把它讀回到程序中並找到那個方法嗎?

如何將我的所有程序輸出寫入文本文件?

如果您的程序已經使用cout / printf並且您想要將當前輸出的所有內容發送到文件,則只需將stdout重定向到指向現有調用之前的文件: http//support.microsoft.com/kb/58667

相關守則:

freopen( "file.txt", "w", stdout );
cout << "hello file world\n"; // goes to file.txt
freopen("CON", "w", stdout);
printf("Hello again, console\n"); // redirected back to the console

或者,如果您只想將某些內容打印到文件中,您只需要一個常規的文件輸出流: http//www.cplusplus.com/doc/tutorial/files.html

相關守則:

ofstream myfile;
myfile.open("file.txt");
myfile << "Hello file world.\n";
printf("Hello console.\n");
myfile.close();

編輯匯總John T和Brian Bondy的答案:
最后,如果您從命令行運行它,您可以使用重定向運算符“>”或附加“>>”將輸出重定向為所有其他提及的輸出:

myProg > stdout.txt 2> stderr.txt

這是一個重復: 這個問題

您可以使用std::freopen重定向stdout,stderr和stdin。

從以上鏈接:

/* freopen example: redirecting stdout */
#include <stdio.h>

int main ()
{
  freopen ("myfile.txt","w",stdout);
  printf ("This sentence is redirected to a file.");
  fclose (stdout);
  return 0;
}

您也可以通過命令提示符運行程序,如下所示:

a.exe > stdout.txt 2> stderr.txt

如果您想要文本文件中的所有輸出,則無需編寫任何額外的代碼。

從命令行:

program > output.txt

如果您只想重定向某些輸出,可以使用ostream作為Dirkgently建議。

然后你不能在其他任何地方使用std :: cout來打印程序中的東西。 將std :: cout更改為std :: ostream,然后根據需要傳遞文件或std :: cout。

sOutFile << stdout;

在C“ stdout ”中定義為FILE*變量。 它只是一個指針。 將它輸出到文件只會將指針的值寫入: 0x77c5fca0到文件中。

如果要將輸出定向到文件,請先將文件寫入文件,或使用命令行將程序輸出重定向到文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM