gpt4 book ai didi

C++ - 如何用自己的类复制 std::fixed 语法

转载 作者:行者123 更新时间:2023-11-30 03:58:23 27 4
gpt4 key购买 nike

我想复制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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com