2017-10-18 12 views
-1

ifstreamistreamに変換する方法はありますか?私はをパラメータとして受け入れるgetToken(istream* br)という機能を持っていますが、私のmain()の中ではifstreamを使ってファイルを読むのですが、ifstreamを使ってgetTokenを呼び出す必要があります。どうすればこの問題を克服できますか?ifstreamをistreamに変換するにはどうすればいいですか

+1

「既に」*「ストリーム」である必要はありません – Galik

+0

'ifstream'は' istream'から派生しています。あなたは 'getToken'に渡すことができます。試してみるとどうなりますか? [mcve]を表示する –

+0

Galilのコメントに加えて、あなたが本当に 'istream&'や 'istream *'を望むならば 'dynamic_cast'することができます。しかし、それは必要ではなく、追加のオーバーヘッドを追加します。 [C++のdynamic_castとstatic_cast](https://stackoverflow.com/q/2253168/608639)も参照してください。 – jww

答えて

4

コメントに記載されているとおり、何もする必要はありません。 std::ifstreamタイプはstd::istreamから継承されているため、istream*を取る関数はすべてifstreamへのポインタを入力として受け取ることができます。例:

string getToken(istream* stream) { 
    ... 
} 

ifstream fileStream; 
getToken(&fileStream); 

ストリームクラスは、このような操作を可能にするように特別に設計されています。

関連する問題