带有boost::program_options的单令牌和多令牌位置选项



我正在编写一个程序,该程序将接收一个后跟多个字符串的文件名作为参数。可选地,它可以采用-count参数;

./program [-count n] <filename> <string1> <string2> ...

这是我写的代码:

PO::positional_options_description l_positionalOptions;
l_positionalOptions.add("file", 1);
l_positionalOptions.add("strings", -1);
PO::options_description l_optionsDescription;
l_optionsDescription.add_options()
("count", PO::value<int>()->default_value(1), "How many times to write"),
("file", PO::value<std::string>(), "Output file name"),
("strings", PO::value<std::vector<std::string>>()->multitoken()->zero_tokens()->composing(), "Strings to be written to the file");
PO::command_line_parser l_parser {argc, argv};
l_parser.options(l_optionsDescription)
.positional(l_positionalOptions)
.allow_unregistered();
PO::variables_map l_userOptions;
try {
PO::store(l_parser.run(), l_userOptions);
}
catch (std::exception &ex) {
std::cerr << ex.what() << std::endl;
exit(1);
}

然而,当我运行./program file.out str1 str2 str3时,它失败了,并显示:

unrecognised option 'str1'

我做错了什么?这在boost::program_options中是否可行?

我想明白了。它是最愚蠢的。

问题是我在add_options()中的每个条目之后都有一个,。这使得只有第一个条目会被保存。

相关内容

  • 没有找到相关文章

最新更新