2010-09-06 98 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 - 如有错误,您可能需要重置它。