Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;-如何用自己的类复制std::fixed语法_C++_Function_Stream_Overloading - Fatal编程技术网

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);
}