-2

我在为下面的代码创建暂停操纵器时遇到问题。“m”是一个以摩西码打印给定数字的对象。这对我有用,但我不知道如何为它制作一个操纵器。你能帮我解决这个问题吗?

long x = 0x2A6B5B5A;
double y = 8.23786789;
m<< x << pause << y ;
4

1 回答 1

3

目前尚不清楚您的代码应该做什么。但是,您所需要的只是:

struct pause_t {};

std::ostream& operator<<(std::ostream& out, const pause_t& p) {
     // put code here
     return out;
};

将执行您喜欢发生的任何事情的代码代替//put code here,然后像这样使用它:

pause_t pause;
std::cout << 42 << pause << 42;

如果m在您的示例中不是,std::ostream那么您只需要<<相应地调整上述过载即可。

PS:上面严格来说不是io操纵器。io 操纵器通常实现为带有ostreamas 参数的函数,并且对此类函数std::ostream具有重载。<<但是,在您的情况下,这种区别可能并不重要。

于 2020-11-14T16:59:13.567 回答