我试图做一个简单的比较来确定 istream 是 std::cin 还是 std::ifstream。
我的伪代码是这样的:
class myclass
{
public:
void write(istream& is)
{
if(is == cin) // this does not work
{
//do something
}
else
{
//do something else
}
}
};
我该如何继续?
谢谢!
最佳答案
由于 std::cin
是 std::istream
的实例,因此您可以比较两个对象的地址以查看它们是否相等:
if (&is == &std::cin)
( Demo )
但是,我会考虑调查一下您是否可以在不这样做的情况下实现目标;基于流参数身份的切换逻辑不是很干净,可能会抑制该项目的 future 开发或维护。
关于C++ 如何区分 std::cin 和 std::ifstream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26371729/