Если моя командная строка:может повысить Program_options отдельные разделенные запятой аргумент значения
> prog --mylist=a,b,c
Можно увеличить program_options-х быть настроен, чтобы увидеть три различных значения аргументов для 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.
EDIT:
Принятые работы решения, но заканчивает тем более сложным, IMO, чем просто перебор вектора и разделив значения вручную. В конце концов, я принял предложение от Джеймса Макнеллиса и реализовал его таким образом. Однако его решение не было представлено в качестве ответа, поэтому я принял другое правильное решение от hkaiser. Оба работали, но ручная токенизация понятна.
Если ничего другого, вы можете использовать 'boost :: tokenizer', чтобы токенизировать значения, разделенные запятыми. –
Это, наверное, самая простая вещь. Просто отправьте аргумент и обработайте случай, когда появляется запятая. –