如果我的命令行是:可能促進Program_options單獨的逗號分隔的參數值
> prog --mylist=a,b,c
可能促進的program_options被設置看到三個不同的參數值的mylist
說法?我已經配置program_options爲:當我檢查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);
,我看到一個值作爲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的另一個正確解決方案。兩者都有效,但手動標記化更清晰。
如果沒有別的,可以使用'boost :: tokenizer'來標記逗號分隔值。 – 2010-06-17 19:53:00
這可能是最容易做的事情。只需後處理參數並處理逗號出現的情況。 – 2010-06-17 20:31:31