【发布时间】:2011-03-20 02:57:29
【问题描述】:
在 C++ 中有没有办法检查 ostream 对象是 cout 还是 ofstream 对象?
类似:
ostream& output(ostream& out)
{
if (out == cout)
return out;
else
{
out << "something different because its not going to the console" << endl;
return out;
}
}
我想这样做的原因是,我想重载 << 运算符,根据它使用的流类型来做两件不同的事情。
是否可以每次使用不同类型的流重载 << 运算符两次?
更新以更好地反映意图。
【问题讨论】:
-
您这样做的动机是什么?对我来说,这似乎是一个非常糟糕的主意。
-
@Brian:我在上面添加了,我想使用
<<运算符根据流做两件不同的事情,欢迎使用替代方法 -
@Jordan:是的,我知道你想使用
<<来根据流做两件不同的事情。你为什么要这样做?对我来说,这似乎是一个非常糟糕的主意。 -
使用流的全部意义在于使其对目的地匿名,因此无论您使用什么类型的流,一切看起来都一样。如果有人将文件流连接到文件描述符 2(大多数系统上的标准输出)会发生什么。这将是一个完全不同的流,但对于操作系统来说,它将进入控制台。或者,如果操作系统将 std::cout 连接到文件怎么办,这超出了应用程序空间,以至于在应用程序内部无法检测到。