boost::program_options 中没有长参数的短参数

问题描述 投票:0回答:2

是否可以使用

boost::program_options
仅使用短选项指定参数? here给出的答案是使用
allow_long_disguise
,这将导致长选项可以用一个破折号来接受。有没有办法使某些选项仅简短(单破折号和单个字符),而不使用
allow_long_disguise

c++ boost-program-options
2个回答
0
投票

不,图书馆不支持此功能。


0
投票

你可以编写自己的解析器

namespace po = boost::program_options;

std::pair<std::string, std::string> short_flag_parser(const std::string& s)
{
    // one letter arguments work with single dash
    if (s[0] == '-' && s.size() == 2) {
        return make_pair(s.substr(1), std::string());
    } else {
        return make_pair(std::string(), std::string());
    }
};

int main() {
    desc.add_options()
        ("help, h", "produce help message");
    

    po::variables_map vm;
    po::store(po::command_line_parser(ac, av).options(desc).extra_parser(short_flag_parser).run(), vm);
    po::notify(vm);    

    if (vm.count("help")) {
        std::cout << desc;
        return;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.