2012-04-03 75 views
0

我需要在C++中非常簡單的事情:根據特定條件使用兩個輸入流中的一個 - 文件或stdin。
就像是:選擇要輸入的流

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 

也因此哪一類是我所使用爲目的呢?

所以,不明白。請幫忙。 謝謝。

+0

我注意到,這是你的第一篇文章堆棧溢出。 [Here](http://stackoverflow.com/faq#howtoask),你可以閱讀如何提問,評估答案,並可能接受你認爲最有幫助的答案。 – 2012-04-03 09:18:29

回答

1

您可以聲明一個istream*,然後在if中分配給&cin或分配給您的ifstream的地址。在以下幾行中,如果您想要避免引用指針的醜陋語法,您可以聲明istream&

0

就像Luca提到的那樣,您可能需要使用istream指針或引用。該引用有點棘手,因爲您只能初始化一次,以後不能更改。這個主題的另一個討論可以發現here

+0

酷!謝謝! :) – OlegG 2012-04-03 09:05:50