J'ai un boost::variant
, qui contient différents types et j'ai une chaîne qui doit ressembler à ceci: type = D, S. Les valeurs de la variante sont respectivement D et S, la clé est 'type'. Maintenant, j'applique un static_visitor à ma variante pour faire la conversion appropriée, qui dans ce cas pourrait ne pas être nécessaire mais pour un autre type, il faudrait convertir en un chaîne.concaténer des valeurs dans une boucle while mal tourné
J'appelle cette fonction appelée ConcatValues
, une partie d'une classe d'aide. Cette classe a un vector<string> v_accumulator
défini, pour contenir les résultats temporaires, car cette fonction peut être appelée plusieurs fois dans la boucle while et je veux finir avec une liste de valeurs séparées par des virgules.
Le problème est cependant que mon vecteur v_accumulator
est toujours vide sur chaque appel de fonction? Comment cela a-t-il un sens, vu qu'il s'agit d'une variable de classe?
while(variant_values_iterator != values.end())
{
variant var = *variant_values_iterator;
boost::apply_visitor(add_node_value_visitor(boost::bind(&SerializerHelper::ConcatValues, helper, _1, _2), key, result), var);
variant_values_iterator++;
}
std::string SerializerHelper::ConcatValues(std::string str, std::string key)
{
v_accumulator.push_back(str); //the previous value is not in this vector???
std::stringstream ss;
std::vector<std::string>::iterator it = v_accumulator.begin();
ss << key;
ss << "=";
for(;it != v_accumulator.end(); it++)
{
ss << *it;
if (*it == v_accumulator.back())
break;
ss << ",";
}
return ss.str();
}
class SerializerHelper
{
public:
std::string ConcatValues(std::string str, std::string key);
private:
std::vector<std::string> v_accumulator;
};
peut-être il y a un moyen plus facile de concaténer les valeurs de D, S dans la partie de la valeur de ma paire de clés d'origine/valeur?
+1, Sinon, vous pouvez passer le premier argument pointeur dans le cas de la liaison d'une fonction membre. Le modèle 'bind' le traitera correctement:' boost :: bind (& SerializerHelper :: ConcatValues, & helper, _1, _2) '. –