语义演员的助推::精神::因果报应::发光
Semantic actor with boost::spirit::karma::lit
请帮我找到一个看似简单的问题的解决方案。我需要从容器生成一个字符串,格式为index=value。
例如:
seq={10,20,30}输出="1=10&2=20&3=30"
但我没有办法在没有写一个自定义生成器的情况下,用提升::精神::因果报应来做到这一点。由于某些原因,不可能将语义动作与因果报应一起使用:lit。也许我错过了什么?
void index(std::string &string_)
{
static size_t index_ = 1;
string_ = boost::lexical_cast < std::string > (index_++);
}
int main()
{
using boost::spirit::karma::uint_;
using boost::spirit::karma::generate;
using boost::spirit::karma::lit;
std::string string_;
boost::array < unsigned int, 4 > array_ = { 1, 2, 3, 5 };
generate(
std::back_insert_iterator < std::string > (string_),
(lit("")[&index] << "=" << uint_) % '&',
array_);
return 0;
}
在编译时,我得到以下错误:
cannot convert parameter 1 from 'boost::spirit::karma::transform_attribute<boost::spirit::unused_type,boost::spirit::unused_type>::type' to 'std::basic_string<_Elem,_Traits,_Ax>
已解决
int main()
{
using boost::spirit::karma::uint_;
using boost::spirit::karma::generate;
using boost::spirit::karma::lit;
using boost::phoenix::val;
using boost::phoenix::ref;
std::string string_;
boost::array < unsigned int, 4 > array_ = { 1, 2, 3, 5 };
unsigned int count_ = 1;
generate(
std::back_insert_iterator < std::string > (string_),
(lit(val(ref(count_)++)) << "=" << uint_) % '&',
array_);
return 0;
}
相关文章:
- 提升精神:解析布尔表达式并简化为规范范式
- 如何克服提升精神AST混乱
- 增强精神解析器规则以检测语句中的特殊结尾
- 提升精神 x3 - 懒惰解析器
- 增强精神 X3:错误:在"..."中没有名为"大小"的类型
- 提升精神 x3 解析为结构,如果它为空,则跳过成员
- 提升用于解析标题列的精神语法
- 卡在移植遗留的提升::精神代码
- 提升精神 V2 Qi 语法线程安全吗?
- 如何编写具有提升精神的"c like if"解析器
- 提升::精神::因果报应使用有条件的替代操作符(|)
- 使用因果报应生成指针向量的输出
- 在提升精神因果报应中,如何可能将属性传递给子规则
- 当一个规则使用BOOST_FUSION_ADAPT_STRUCT时,精神因果报应语法问题
- 提升因果报应-从一个属性生成多个字符串
- 提升:精神:因果报应:如何获得输出的当前位置
- C++助推::精神::因果报应规则的变体
- 语义演员的助推::精神::因果报应::发光
- 提升::精神::因果报应基于输入属性的替代选择
- 提升因果报应-非消耗谓词