Dmi*_*riy 12 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()
("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;
}
还有一些测试:
>Test --csv test
in option 'csv_name': invalid option value
>Test --csv_name test
in option 'csv_name': invalid option value
>Test --csv_name 0
>Test --csv text
in option 'csv_name': invalid option value
>Test --csv 0
>Test --csv_name 0
>Test --csv_name 0 --csv text
multiple occurrences
看起来像boost :: program_option威胁参数"csv"为"csv_name".
它是一个功能还是错误?
是的,由于默认选项解析风格,这是一个"功能" .尝试使用简短的选项,例如:
recipients.add_options()
("csv,c", po::value<std::string>(), "" )
("csv_name,C", po::value<unsigned>(), "" )
;
Run Code Online (Sandbox Code Playgroud)
或者玩这个basic_command_line_parser::style(int)方法.我没试过这个,所以YMMV.
我担心这是一个错误.但是,它应该在1.42修复 - 你尝试过哪个版本?
| 归档时间: |
|
| 查看次数: |
2355 次 |
| 最近记录: |