我在C ++中需要非常简单的事情:根据特定条件,使用两个输入流中的一个 - 文件或标准输入 - 。 像那样:
istream s;
if (true)
s = cin;
else
s = ifstream(argv[1]);
while (s.read()) /* ... */
希望这个想法很明确。
首先,它似乎无法声明istream
变量(istream
,因为ifstream
和ci
n通常没有连接到任何设备或档案或其他
第二件事是它根本无法声明istream
变量,编译器说:
error: ‘std::basic_istream<_CharT, _Traits>::basic_istream() [with _CharT = char, _Traits = std::char_traits<char>]’ is protected
那么我可以将哪一堂课用于那个目的呢?
所以,没理解。请帮忙。 感谢。
答案 0 :(得分:1)
您可以声明istream*
,然后在if &cin
或ifstream
的地址中声明。在以下几行中,如果您想避免解除引用指针的丑陋语法,可以声明istream&
。
答案 1 :(得分:0)
与Luca提到的一样,您可能需要使用istream指针或引用。引用有点棘手,因为您只能初始化一次,以后不能更改它。可以找到关于该主题的另一个讨论here