Если моя командная строка:
> prog --mylist=a,b,c
Можно ли настроить параметры программы Boost для просмотра трех различных значений аргумента для аргумента mylist
? Я настроил параметры программы как:
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);
Когда я проверяю значение аргумента mylist
, я вижу одно значение как a,b,c
. Я хотел бы видеть три различных значения, разделенные запятой. Это прекрасно работает, если я укажу командную строку как:
> prog --mylist=a b c
или
> prog --mylist=a --mylist=b --mylist=c
Есть ли способ настроить program_options таким образом, чтобы он видел a,b,c
как три значения, каждое из которых должно быть вставлено в вектор, а не одно?
Я использую boost 1.41, g ++ 4.5.0 20100520 и включил экспериментальные расширения c ++ 0x.
EDIT:
Принятое решение работает, но в итоге становится все более сложным, IMO, чем просто итерация по вектору и разделение значений вручную. В конце концов, я принял предложение Джеймса Макнеллиса и реализовал его таким образом. Однако его решение не было представлено как ответ, поэтому я принял другое правильное решение от hkaiser. Оба работали, но ручной токенизация понятнее.