在你说 OVERKILL 之前,我不在乎。
如何让 Boost.program_options 处理所需的cat
选项-
?
我有
// visible
po::options_description options("Options");
options.add_options()("-u", po::value<bool>(), "Write bytes from the input file to the standard output without delay as each is read.");
po::positional_options_description file_options;
file_options.add("file", -1);
po::variables_map vm;
po::store(po::command_line_parser(argc, argv).options(options).positional(file_options).run(), vm);
po::notify(vm);
bool immediate = false;
if(vm.count("-u"))
immediate = true;
if(vm.count("file"))
support::print(vm["file"].as<vector<string>>());
当我运行时抛出异常cat - - -
:
无法识别的选项'-'
我希望它被-
视为一个位置参数,并且我需要它在完整文件列表中的正确顺序。我怎么能做到这一点?
更新
我有一半的修复。我需要
po::options_description options("Options");
options.add_options()("-u", po::value<bool>(), "Write bytes from the input file to the standard output without delay as each is read.")
("file", po::value< vector<string> >(), "input file");
po::positional_options_description file_options;
file_options.add("file", -1);
-
问题是,当我输出参数时,我似乎只得到三个中的两个:
if(vm.count("file"))
support::print(vm["file"].as<vector<string>>());
其中 support::print 很好地处理了向量和东西。