假設我有一個名爲print
的簡單函數,其中一個循環使用cout
來打印控制檯,比如1-5。C++函數cout重定向到文件
有沒有一種方法,我可以這樣做:
file << print();
拿到print
輸出保存到一個文件?很明顯,假設我正確地打開了文件ofstream
,以及所有內容。
假設我有一個名爲print
的簡單函數,其中一個循環使用cout
來打印控制檯,比如1-5。C++函數cout重定向到文件
有沒有一種方法,我可以這樣做:
file << print();
拿到print
輸出保存到一個文件?很明顯,假設我正確地打開了文件ofstream
,以及所有內容。
假設print
是void
功能,其輸出硬編碼爲cout
,有什麼可以做:輸出將通過輸出流(控制檯的執行環境的分配來控制默認或一個文件重定向>myoutput.txt
)。
如果你想你的程序來控制,其中輸出變爲,通過ostream&
您print
功能,並使用它的輸出:如果你想print
輸出到控制檯或默認的輸出
void print(ostream& ostr) {
// use ostr instead of cout
ostr << "hello, world!" << endl;
}
,叫
print(cout);
如果你想讓它寫入文件,做出ofstream
,並把它傳遞給print
:
ofstream file("hello.txt");
print(file);
「有沒有辦法?」:不......不是不改變print()
和/或在調用者中添加更多的代碼。當你說...
file << print();
...什麼發送到文件流是什麼的print()
返回。正如你所說的print()
正在發送所需的輸出到std::cout
,返回值的表面上我們不會有任何我們想要的file
,所以除非它是一個空字符串,最好讓調用者不寫file << print();
。
相反,調用方應轉移輸出cout
到file
調用print()
前:James' answer here展示瞭如何可以做。