提升Karma,使用前导零格式化整数

时间:2018-02-06 16:20:11

标签: c++ boost boost-spirit

如果我有一个简单的发电机:

struct MyIntsGen
    : boost::spirit::karma::grammar<boost::spirit::ostream_iterator, std::tuple<int, int, int>()>
{
    MyIntsGen() : MyIntsGen::base_type(start_)
    {

        namespace bsk = boost::spirit::karma;
        start_ = '<' 
            << bsk::int_
            << ','
            << bsk::int_
            << ','
            << bsk::int_
            << '>';
    }

    ~MyIntsGen() = default;
    boost::spirit::karma::rule<boost::spirit::ostream_iterator, std::tuple<int, int, int>()> start_;
};

我只用以下方式运行它:

std::tuple<int, int, int> ms = { 300, 20, 1 };
std::cout << boost::spirit::karma::format(MyIntsGen(), ms) << std::endl;

我看到了您期望的输出<300,20,1>,但我想用前导零填充数字。换句话说,我想看看:

<300,020,001>

在我的规则中,这是一种简单的方法吗?

0 个答案:

没有答案