istream이 std :: cin 또는 std :: ifstream인지 찾기 위해 간단한 비교를 시도하고 있습니다.C++ std :: cin과 std :: ifstream을 어떻게 구별 할 것인가?
class myclass
{
public:
void write(istream& is)
{
if(is == cin) // this does not work
{
//do something
}
else
{
//do something else
}
}
};
내가 어떻게 진행할 수 :
내 의사는 같은 것입니다?
감사합니다. 당신이 할 수있는 경우
if (&is == &std::cin)
(Demo)
내가 조사이라고 생각하지만 : std::cin
이후
'std :: istream &'을 사용하는 것이 최선의 선택 인 것 같지 않습니다. 함수에 오버로드. 정말로, 그러나 행동을 바꾸는 것은 조금 의심스러워 보입니다. – chris
@chris 어떻게 오버로드가 도움이 될까요? 'std :: cin'은'std :: istream'의 인스턴스입니다. 어떤 과부하가'std :: cin'을 탐지 할 것인가? – cdhowie
@cdhowie, 나는 더 많은'std :: ifstream'을 생각해 냈습니다. OP는 'std :: cin'이 특별히 특별하다는 것을 나타내지 않는 것 같아요. 단지 그들 사이를 구별 할 필요가 있습니다. 파일 스트림과 다른 스트림이 완벽하지 않다는 것을 알고 있습니다. – chris