【发布时间】:2016-02-01 14:52:08
【问题描述】:
我目前正在与boost::program_options 合作。我的程序应该将任意数量的任意长度的“列表”作为参数(除其他外......)。例如,用户应该能够调用
./myprogram -list item1 item2 item3 -list item1 item2 -list item1 item2
显然,我不想得到一个列表/向量,其中所有项目一个接一个,但是(在这种情况下)三个列表/向量(或者,例如,一个向量包含元素)每个列表有两个或三个项目(每个项目应该是一个字符串,但我想这并不重要)。
正如我之前所说,列表的数量(以及每个列表的项目数!)应该是任意的。
我如何使用boost::program_options 做到这一点?
【问题讨论】:
-
AFAIK 没有直接的方法可以做到这一点,因为每个
itemn都将被视为一个单独的选项。您可以做的一件事是定义一个名为“list”的选项,其类型为vector<string>,然后在您传递参数时,传递一个分隔字符串,例如-list "item1,item2,item3" -list "item4,item5" -list "item1,tem2" -
好吧,如果真的没有其他方法我会考虑这样做,但我实际上认为这对用户来说非常复杂而且很不雅。
-
我之前尝试过做类似的事情,但没有成功。虽然 Boost 程序选项非常适合解决更简单的问题,但一旦您发现用例或需要不支持的东西,您基本上必须放弃它并编写自己的命令行参数处理。
标签: c++ boost boost-program-options