我有一个程序需要一些选项,我想知道什么时候没有提供参数。
当我在没有一个选项arg
的情况下调用我的程序时会发生这种情况program -lib
cout: the required argument for option '-lib' is missing
没关系,但是当我用其他选项调用我的程序时,例如
program -lib -out number
分配给lib的变量获取值“-out”,尽管-out被声明为选项。我期望得到与第一个例子中相同的警告。
我可以通过在所有选项中添加自定义通知程序来解决此问题,代码如下:
void validate_string(const std::string& r)
{
if (*r.begin() == '-') {
throw Something
}
}
...
("lib", po::value<std::string>(&lib)->notifier(validate_string), "Library")
使用boost :: program_options的内置机制有什么办法吗?我不喜欢我目前的解决方案,选项声明看起来很乱,很难阅读。除了-out没有被分配。
顺便说一句:我正在使用allow_long_disguise
,因此单个-
可用于长期选项