-1
有什麼方法可以將ifstream
轉換爲istream
?我有一個叫做getToken(istream* br)
的函數,它接受一個istream
作爲參數,但在我的main()
中,我使用ifstream
來讀取一個文件,我必須使用這個相同的ifstream
來調用getToken
。我怎樣才能克服這個問題?如何將ifstream轉換爲istream
有什麼方法可以將ifstream
轉換爲istream
?我有一個叫做getToken(istream* br)
的函數,它接受一個istream
作爲參數,但在我的main()
中,我使用ifstream
來讀取一個文件,我必須使用這個相同的ifstream
來調用getToken
。我怎樣才能克服這個問題?如何將ifstream轉換爲istream
正如在評論中提到的,你不需要做任何奇特的事情。 std::ifstream
類型繼承自std::istream
,因此任何採用istream*
的函數都可以將指針指向ifstream
作爲輸入。例如:
string getToken(istream* stream) {
...
}
ifstream fileStream;
getToken(&fileStream);
這些streams類是專門設計用來使這種操作成爲可能的。
你不需要它*已經*一個'流'' – Galik
'ifstream'從'istream'派生。你應該能夠將它傳遞給'getToken'。當你嘗試時會發生什麼?顯示一個[mcve] –
除了Galik的評論,如果你真的想要一個'istream&'或'istream *',你可以'dynamic_cast'。但它沒有必要,並增加了額外的開銷。另請參閱[C++中的dynamic_cast和static_cast](https://stackoverflow.com/q/2253168/608639)。 – jww