2010-09-06 123 views
4

有人告訴我,從標準輸入重定向到文件,我需要做到以下幾點:在C重定向輸入++

static std::ifstream inF("inpur.txt"); 
std::cin.rdbuf(inF.rdbuf()); 

,並在每次調用給std :: cin將被重定向到INPUT.TXT。 但我的問題是:我需要打開inF嗎?如果我這樣做,我需要在哪裏做到這一點?

+0

請澄清:你需要從標準輸入重定向到一個輸出文件或標準輸入重定向從輸入文件? – vladr 2010-09-06 15:33:28

回答

2

這就是美麗。在聲明對象並將字符串傳遞給ifstream的顯式構造函數時,您已經這樣做了。

文件以TEXT模式打開。

參考this

4

您可以通過使用字符串構造函數調用它來打開它。

+0

那麼爲什麼inF.is_open()返回false? – 2010-09-06 14:50:31

+0

發佈實際的代碼。 'inpur.txt'看起來像是拼寫錯誤。 – dirkgently 2010-09-06 14:50:55

+0

@ or.nomore:這可能意味着兩件事情:文件無法打開(例如不存在),或者遇到靜態初始化順序失敗(請參見http://www.parashift.com/c++- faq-lite/ctors.html#faq-10.14) – 2010-09-06 14:53:44

1

您的代碼沒問題。請儘量備份原始的cin.rdbuf - 如有錯誤,您可能需要重置它。