boost :: program_options:选项在没有提供参数时将以下选项识别为参数

时间:2015-05-06 15:30:51

标签: c++ boost boost-program-options

我有一个程序需要一些选项,我想知道什么时候没有提供参数。

当我在没有一个选项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,因此单个-可用于长期选项

0 个答案:

没有答案