gpt4 book ai didi

c++ - 具有 boost::spirit::karma::lit 的语义 Actor

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:33:07 25 4
gpt4 key购买 nike

请帮我找到一个看似简单的问题的解决方案。我需要以 index=value 的形式从容器中生成一个字符串。

例如:

序列 = { 10, 20, 30 }输出=“1=10&2=20&3=30”

但我发现如果不编写自定义 gererator,就无法使用 boost::spirit::karma 来实现这一点。由于某些原因,不可能对 karma::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;
}

关于c++ - 具有 boost::spirit::karma::lit 的语义 Actor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9510366/

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