Может повысить значения Program_options, разделенные запятыми значениями аргументов
Если моя командная строка:
> prog --mylist=a,b,c
Можно ли настроить параметры_программы Boost, чтобы увидеть три различных значения аргумента дляmylist
аргумент? Я настроил program_options как:
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.
РЕДАКТИРОВАТЬ:
Принятое решение работает, но в конечном итоге становится более сложным, IMO, чем просто итерация по вектору и разделение значений вручную. В конце концов, я принял предложение Джеймса Макнеллиса и реализовал его таким образом. Однако его решение не было представлено как ответ, поэтому я принял другое правильное решение от hkaiser. Оба работали, но ручная токенизация понятнее.