Can Boost Program_options getrennte, durch Kommas getrennte Argumentwerte

Wenn meine Befehlszeile lautet:

> prog --mylist=a,b,c

Can Boosts program_options werden so eingerichtet, dass drei unterschiedliche Argumentwerte für das @ angezeigt werdemylist Streit? Ich habe program_options wie folgt konfiguriert:

namespace po = boost::program_options;
po::options_description opts("blah")

opts.add_options()
    ("mylist", std::vector<std::string>>()->multitoken, "description");

po::variables_map vm;
po::store(po::parse_command_line(argc, argv, opts), vm);
po::notify(vm);

Wenn ich den Wert des @ prümylist Argument, ich sehe einen Wert alsa,b,c. Ich möchte drei unterschiedliche Werte sehen, die nach Komma getrennt sind. Dies funktioniert gut, wenn ich die Befehlszeile als:

> prog --mylist=a b c

ode

> prog --mylist=a --mylist=b --mylist=c

Gibt es eine Möglichkeit, program_options so zu konfigurieren, dass es @ sieha,b,c als drei Werte, die jeweils in den Vektor eingefügt werden sollen, anstatt einen?

Ich verwende boost 1.41, g ++ 4.5.0 20100520 und habe experimentelle c ++ 0x -Erweiterungen aktiviert.

BEARBEITEN

Die akzeptierte Lösung funktioniert, ist jedoch im Endeffekt komplizierter, als nur durch einen Vektor zu iterieren und die Werte manuell zu teilen. Am Ende habe ich den Vorschlag von James McNellis aufgegriffen und so umgesetzt. Seine Lösung wurde jedoch nicht als Antwort übermittelt, weshalb ich die andere richtige Lösung von hkaiser akzeptierte. Beides hat funktioniert, aber die manuelle Tokenisierung ist klarer.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage