我想复制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
或创建新。