想象一下一个std::ostream& operator<<
想要对数字进行某些操作。为此,有人可能想使用std::hex
,其他人可能想使用none,无论如何,任何操纵器都是可能的。
我该如何将它们复制到另一个std::ostream
中,而不传递作为参数的ostream
的文本内容呢?我只需要操纵器。
因此,我希望std::cout << std::hex << someCoolClass(10)
,其中someCoolClass
可能是这样的:
struct someCoolClass
{
someCoolClass(int i) : _i(i)
{}
friend std::ostream& operator<<(std::ostream& os, const someCoolClass& rhs)
{
std::stringstream ss;
//magically copy manipulators of os
ss << _i;
return os << ss.str();
}
private:
int _i;
};
打印出a
。我知道这个例子似乎没有用,特别是将整数转换为字符串的其他流似乎也没有用,但让我们想象一下这不是无用的,也不是纯粹的胡言乱语。
谢谢。