[英]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.