C++ C++;-如何用自己的类复制std::fixed语法
我想复制C++ C++;-如何用自己的类复制std::fixed语法,c++,function,stream,overloading,C++,Function,Stream,Overloading,我想复制std::fixed语法 std::cout << std::fixed << ...; 我也不知道我做错了什么。 我已经查看了中的std::fixed语法,以了解它是如何完成的,但仍然无法让它工作 下面是一个简短的解析器示例,其中包含我想要实现的语法 struct parser { void skip() { // skip } parser &operator>>(int i) {
std::fixed
语法
std::cout << std::fixed << ...;
我也不知道我做错了什么。
我已经查看了
中的std::fixed
语法,以了解它是如何完成的,但仍然无法让它工作
下面是一个简短的解析器示例,其中包含我想要实现的语法
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;
我已经为我的解析器重载了操作符>>
,但它不是我想要的语法
如何使用skip
方法实现语法
谢谢
跳过
是一个函数,因此您希望重载函数指针的运算符>
。然后用参数*this
调用函数:
parser& operator>>(parser& f(parser&))
{
return f(*this);
}
请注意,
std::istream
已经支持操纵器。您的全局skip
函数只需获取并返回std::istream&
。然后,您可以对现有的std::istream
使用skip
,或者创建一个新的。谢谢!那正是我要找的!工作得很好!
parser& operator>>(parser& f(parser&))
{
return f(*this);
}