我想复制std::fixed
句法
std::cout << std::fixed << ...;
但是有我自己的解析器类
parser >> skip >> i;
而且我无法弄清楚我做错了什么。
我看过 std::fixed
<iostream>
中的语法看看它是如何完成的,但仍然无法正常工作。
这是一个带有我想要实现的语法的解析器的简短示例。
struct parser
{
void skip()
{
// skip
}
parser &operator>>(int i)
{
// parse
return *this;
}
// parser &operator>>(parser &p)
// {
// p.skip();
// return *this;
// }
};
parser &skip(parser &p)
{
p.skip();
return p;
}
parser p;
int i = 0;
p >> skip >> i;
我重载了 operator>>
对于我的解析器,但这不是我想要的语法。
如何使用 skip
实现语法方法?
谢谢
最佳答案
skip
是一个函数,因此您想为函数指针重载 operator>>
。然后您只需使用参数 *this
调用该函数:
parser& operator>>(parser& f(parser&))
{
return f(*this);
}
请注意,std::istream
已经支持操纵器。您的全局 skip
函数可以获取并返回 std::istream&
。然后你可以在一个已经存在的 std::istream
上使用 skip
或创建一个新的。
关于C++ - 如何用自己的类复制 std::fixed 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27454835/