我試圖允許使用boost的「多空」選項(版本1.46)。我的印象是,使*僞裝*助推風格將允許這樣的事情。鑑於此代碼:C++ boost程序選項允許長期選項
// Declare the supported options.
boost::program_options::options_description desc("Allowed options");
desc.add_options()
("help,h", "produce help message")
("RunTimeE,rtttt", boost::program_options::value<std::string>(), "RunTimeE Version")
;
boost::program_options::variables_map vm;
boost::program_options::store(boost::program_options::command_line_parser(argc, argv)
.options(desc)
.style(boost::program_options::command_line_style::unix_style
| boost::program_options::command_line_style::allow_long_disguise)
.run(),
vm);
boost::program_options::notify(vm);
if (vm.count("help")) {
cout << desc << "\n";
return 1;
}
if (vm.count("RunTimeE")) {
cout << vm["RunTimeE"].as<std::string>() << endl;
return 1;
}
會產生:
./output --help
Allowed options:
-h [ --help ] produce help message
-r [ --RunTimeE ] arg RunTimeE Version
但我希望它產生:
./output --help
Allowed options:
-h [ --help ] produce help message
-rtttt [ --RunTimeE ] arg RunTimeE Version
任何人都可以在這方面幫助?
謝謝。
如果不編寫自己的[自定義分析器](http://www.boost.org/doc/libs/1_56_0/doc/html/program_options/howto.html),我不確定這是可能的。您正在指定一個長選項'RunTimeE'和一個簡短選項'rtttt',但短期選項根據定義只有一個字符。你可以通過指定'allow_long_disguise'來使用長選項,但我沒有看到允許你有兩個長選項。事實上,長期和短期有兩個長期選擇的點是什麼? – sjdowling 2014-10-18 13:31:18