一見単純な問題の解決策を見つけてください。コンテナからindex=valueの形式で文字列を生成する必要があります。
例えば:
seq = {10、20、30} output = "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>