选择要输入的流

时间:2012-04-03 08:14:14

标签: c++ if-statement iostream

我在C ++中需要非常简单的事情:根据特定条件,使用两个输入流中的一个 - 文件或标准输入 - 。 像那样:

istream s;  
if (true)  
     s = cin;  
else  
    s = ifstream(argv[1]);  

while (s.read()) /* ... */

希望这个想法很明确。

首先,它似乎无法声明istream变量(istream,因为ifstreamci n通常没有连接到任何设备或档案或其他 第二件事是它根本无法声明istream变量,编译器说:

error: ‘std::basic_istream<_CharT, _Traits>::basic_istream() [with _CharT = char, _Traits = std::char_traits<char>]’ is protected  

那么我可以将哪一堂课用于那个目的呢?

所以,没理解。请帮忙。 感谢。

2 个答案:

答案 0 :(得分:1)

您可以声明istream*,然后在if &cinifstream的地址中声明。在以下几行中,如果您想避免解除引用指针的丑陋语法,可以声明istream&

答案 1 :(得分:0)

与Luca提到的一样,您可能需要使用istream指针或引用。引用有点棘手,因为您只能初始化一次,以后不能更改它。可以找到关于该主题的另一个讨论here