2017-10-18 10 views
-1

ifstreamistream으로 변환 할 수있는 방법이 있습니까? 나는 istream을 매개 변수로 받아들이는 getToken(istream* br)이라는 함수를 가지고 있지만, 내 main() 내에서 ifstream을 사용하여 파일을 읽었으며이 ifstream을 사용하여 getToken을 호출해야합니다. 이 문제를 어떻게 극복 할 수 있습니까?ifstream을 istream로 변환하는 방법

+1

* 이미 *''스트림 '입니다. – Galik

+0

'ifstream'은 istream에서 파생되었습니다. 그냥 getToken으로 전달할 수 있어야합니다. 시도 할 때 어떻게됩니까? Show a 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); 

스트림 클래스는 이와 비슷한 작업을 수행 할 수 있도록 특별히 설계되었습니다.