L'obtention d'une sous-chaîne d'une `std::string", entre deux itérateurs

J'ai un programme qui devrait prendre comme entrée un peu d'options pour spécifier les probabilités dans la forme (p1, p2, p3, ... ). Donc, l'utilisation de lignes de commande serait littéralement:

./myprog -dist (0.20, 0.40, 0.40)

Je veux analyser les listes en C++ et je suis en train d'essayer de le faire avec des itérateurs pour le type std::string et la fonction de répartition prévues par Boost.

//Assume stuff up here is OK
std::vector<string> dist_strs; //Will hold the stuff that is split by boost.
std::string tmp1(argv[k+1]);   //Assign the parentheses enclosed list into this std::string.

//Do some error checking here to make sure tmp1 is valid.

boost::split(dist_strs,  <what to put here?>   , boost::is_any_of(", "));

Note au-dessus de la <what to put here?> partie. Depuis que j'ai besoin d'ignorer le début et la fin des parenthèses, je veux faire quelque chose comme

tmp1.substr( ++tmp1.begin(), --tmp1.end() )

mais il ne ressemble pas à substr fonctionne de cette façon, et je ne peux pas trouver une fonction dans la documentation qui fonctionne pour ce faire.

Une idée que j'avais était de faire l'itérateur de l'arithmétique, si cela est permis, et l'utilisation substr appeler

tmp1.substr( ++tmp1.begin(), (--tmp1.end()) - (++tmp1.begin()) )

mais je n'étais pas sûr si cela est permis, ou si c'est une façon raisonnable de le faire. Si ce n'est pas une approche valable, ce qui est une meilleure? ...Merci beaucoup à l'avance.

InformationsquelleAutor ely | 2012-04-04