2014-09-11 35 views
1

随着的boost :: program_options,如果参数不是---/选项的一部分(无论是自己的选择和他们可能的值),可我抓住的这些单独的参数列表?是否有可能使用boost :: program_options来捕获不带短划线的参数?

例如,我想写一个ls程序。我希望我能有类似的实现,如:

ls -l --color=always <file_dir_1> <file_dir_2> ... <file_dir_n> 

在那里我可以捕捉<file_dir_1> ... <file_dir_n>和专门处理它们。

+2

它已在[教程](http://www.boost.org/doc/libs/1_56_0/doc/html/program_options/tutorial.html)中解决。 – 2014-09-11 08:22:42

回答

2

这些被称为“位置选项”。 Boost.Program选项按名称转发到现有的选项处理这些:

po::positional_options_description p; 
p.add("input-file", -1); // forward positional options to "input-file" option 

po::variables_map vm; 
po::store(po::command_line_parser(ac, av). // replace po::parse_command_line(...) 
      options(desc).positional(p).run(), vm); 
po::notify(vm); 

你想有“输入文件”为std::vector<std::string>类型的现有选项。

相关问题