[英]Input/Output from external file in C++ without adding extra code into main file
如何在編譯/執行程序期間從文件( input.txt
)獲取輸入並將 output 提供到另一個文件( output.txt
)中,而無需向主文件添加額外的代碼。 我不想用
#ifndef ONLINE_JUDGE
或者
file.open("input.txt")
等等
我希望我的程序的行為如下所示。
在程序的編譯/執行過程中我應該添加什么來實現這一點?
主文件
#include <iostream>
using namespace std;
int main()
{
string S;
cin >> S;
cout << S;
return 0;
}
輸入.txt
Hello, World!
output.txt
Hello, World!
程序的標准輸入、標准 output 和標准錯誤流會發生什么與程序的構建設置無關。 它僅取決於父進程如何啟動程序。
當使用CreateProcess
啟動子進程時,在lpStartupInfo
參數中,您可以指定子進程的標准輸入、標准 output 和標准錯誤 stream 將從/到的管道傳輸。 例如,您可以指定 pipe 進出父進程。 然后,父進程可以對這些管道做任何它想做的事情。 例如,它可以將文件input.txt
的內容輸入孩子的標准輸入,並將孩子的標准 output 的內容寫入文件output.txt
。 或者,父進程可以在創建子進程時簡單地將文件input.txt
和output.txt
的文件句柄指定為標准輸入和標准 output 的句柄。 這樣,父進程就不必進行任何輸入和 output 自己處理,因為一切都將由操作系統處理。
有關詳細信息,請參閱 Microsoft 官方文檔中的以下頁面:
但是,這並不一定意味着您必須編寫自己的程序來充當父進程。 Windows 命令行 Shell ( cmd.exe
) 可以為您執行此操作。 您可以執行您的程序並指定標准輸入和標准 output 應該被重定向,通過以下方式調用您的程序:
myprogramname.exe <input.txt >output.txt
That way, the Windows Command Line Shell ( cmd.exe
) will call CreateProcess
for you and attach the appropriate file handles to standard input and standard output.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.