如果我的命令行是:
> prog --mylist=a,b,c
Boost 的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
or
> prog --mylist=a --mylist=b --mylist=c
有没有办法配置program_options以便它看到a,b,c
作为三个值,每个值都应该插入到向量中,而不是一个?
我正在使用 boost 1.41、g++ 4.5.0 20100520,并启用了 c++0x 实验扩展。
EDIT:
在我看来,公认的解决方案有效,但最终变得更加复杂,而不仅仅是迭代向量并手动分割值。最后,我接受了 James McNellis 的建议并按照这种方式实施了。然而,他的解决方案没有作为答案提交,所以我接受了 hkaiser 的另一个正确解决方案。两者都有效,但手动标记化更清晰。