我已經根據the official tutorial的示例複製了我的問題。增強程序選項 - 從函數結果傳遞參數名稱
#include <string>
#include <boost/program_options.hpp>
#include <iostream>
namespace po = boost::program_options;
using namespace std;
const char* withAlias(const char* name, const char* alias)
{
return (string(name) + "," + alias).c_str();
}
int main(int argc, char** argv)
{
po::options_description desc;
const auto name = withAlias("compression", "c");
desc.add_options()
(name, po::value<int>(), "compression bla bla"); // this doesn't work
("compression,c", po::value<int>(), "asdasdasd"); // this works
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);
if (vm.count("compression"))
cout << "Compression set to " << vm["compression"].as<int>() << endl;
else
cout << "Compression not set" << endl;
return 0;
}
當我運行我的程序:my_bin --compression 5
,它拋出一個錯誤,他說: unrecognized option '--compression'
。
當我根本不使用別名(又名("compression", ...)
)時,它按預期工作。
它發生在名稱字符串中有,
,但只有當它不作爲字符串文字傳遞時。
無法真正弄清楚是什麼原因造成的。
你嘗試' 「-c, - 壓縮」'? (現在讀鏈接,可能不會工作) –
@ YuvalBen-Arie剛剛做了,沒有工作,同樣的錯誤 –