如果我有一个简单的发电机:
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>
在我的规则中,这是一种简单的方法吗?