你需要两件事:
-
使用
wvalue
-
提供默认值的窄字符文本表示,以便在使用说明文本中使用。
注意,您引用了
add_options
线问题是添加选项描述,而不是解析它。
原因是选项描述是
char
-始终基于(您知道这一点,因为描述和选项名称也很窄)。当获取默认值的文本表示时,Boost PO尝试使用
ostream
操作员¹这对您的
wchar_t const*
或
std::wstring
价值
default_value(std::vector<int>{1,2,3}, "1-3")
对于一些解析范围的多值选项)。
演示
您可以获得:
看到了吗
Live On Coliru
#include <boost/program_options.hpp>
namespace po = boost::program_options;
int main() {
po::options_description desc("Allowed options");
desc.add_options()
("silent", po::wvalue<std::wstring>()->default_value(L"yes", "yes"), "Select the verbosity")
;
po::variables_map vm;
std::vector<std::wstring> args { L"--silent=no" };
po::wcommand_line_parser parser(args);
po::wparsed_options parsedOptions = parser.options(desc).style(po::command_line_style::default_style).run();
po::store(parsedOptions, vm);
po::notify(vm);
}
注释
在这个特定的示例中,您可能需要
po::bool_switch()
而不是
po::xvalue()
¹(最终,通过Boost词法转换)