C++ 如何区分 std::cin 和 std::ifstream?

标签 c++ ifstream cin difference

我试图做一个简单的比较来确定 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::cinstd::istream 的实例,因此您可以比较两个对象的地址以查看它们是否相等:

if (&is == &std::cin)

( Demo )

但是,我会考虑调查一下您是否可以在不这样做的情况下实现目标;基于流参数身份的切换逻辑不是很干净,可能会抑制该项目的 future 开发或维护。

关于C++ 如何区分 std::cin 和 std::ifstream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26371729/

相关文章:

c++ - 打开方法仅使用完整路径打开文件 C++

c++ - 将用户输入验证为 int 时陷入无限循环

c++ - 在 C++ 中追加不同的字段

c++ - 将 HID 触摸设备与 Pnp 监视器相关联

c++ - 如何在读取文件时打印数组

c++ - 当>>运算符试图输入一个大于变量可以包含的值时,会发生什么?

c++ - cin >> i 符号输入错误 +

c++ - 为什么 while (std::cin >> foo) 语法不起作用?

c++ - 放弃 auto_ptr 包含对象的所有权

c++ - 在 C++ 中将局部变量传递给函数的最佳方法