Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ boost::程序选项错误或功能?_C++_Boost_Boost Program Options - Fatal编程技术网

C++ boost::程序选项错误或功能?

C++ boost::程序选项错误或功能?,c++,boost,boost-program-options,C++,Boost,Boost Program Options,非常简单的例子: #include <string> #include <boost/program_options.hpp> namespace po = boost::program_options; int main(int argc, char* argv[]) { po::options_description recipients("Recipient(s)"); recipients.add_options() ("c

非常简单的例子:



#include <string>
#include <boost/program_options.hpp>

namespace po = boost::program_options;

int main(int argc, char* argv[])
{
    po::options_description recipients("Recipient(s)");
    recipients.add_options()
        ("csv",         po::value<std::string>(),     ""  )
        ("csv_name",    po::value<unsigned>(),        ""  )
    ;

    po::options_description cmdline_options;
    cmdline_options.add(recipients);

    po::variables_map vm;
    po::store(po::command_line_parser(argc, argv).options(cmdline_options).run(), vm);
    po::notify(vm);

    return 0;
}

看起来boost::program\u选项威胁参数“csv”为“csv\u名称”。
这是一个功能还是一个bug?

是的,这是一个“功能”,因为默认选项解析。尝试使用短选项,例如:

recipients.add_options()
    ("csv,c",      po::value<std::string>(), ""  )
    ("csv_name,C", po::value<unsigned>(),    ""  )
;
recipients.add_options()
(“csv,c”,po::value(),“”)
(“csv_名称,C”,po::value(),“”)
;

或者玩弄这种方法。我没有试过这个,所以YMMV。

恐怕这是个bug。但是,它应该在1.42中修复——您尝试了哪个版本?

我是对的。style(po::命令行样式::默认样式^po::命令行样式::允许猜测);帮助我。谢谢。我用的是1.42.0版。正如我已经说过的parser.style(po::command\u line\u style::default\u style^po::command\u line\u style::allow\u gussing);帮帮我,嗨,弗拉基米尔。很高兴看到作者回答这个库:)你认为这个bug是什么?默认的解析风格?不,默认的风格很好。但是,如果您有两个选项,一个名为“csv”,另一个名为“csv_name”,并且命令行有“-csv”,那么与近似匹配相比,选择完全匹配是合理的。我相信解决办法是:嗨,弗拉基米尔。Boost1.43已经发布,但看起来没有包含错误修复。请确认boost 1.43中没有修复该错误,好吗?不幸的是,我似乎无法将该修复程序合并到主干中——因此您可以从我上面给出的变更集链接手动应用它。我真的很抱歉!
recipients.add_options()
    ("csv,c",      po::value<std::string>(), ""  )
    ("csv_name,C", po::value<unsigned>(),    ""  )
;