gpt4 book ai didi

c++ - boost 程序选项 - 将 multitoken 选项从配置文件附加到命令行

转载 作者:太空狗 更新时间:2023-10-29 21:17:22 26 4
gpt4 key购买 nike

使用 boost 程序选项,我试图允许用户在配置文件 (.ini) 中为多标记参数设置默认值,该文件将附加到他们的命令行选择。

例子:

程序选项:

m_Desc.add_options()
("settings,s", po::value<string>("FILE")->default_value("~/.config.ini")->multitoken(), "Settings")
("tax,t", po::value<vector<string>>("name|rate")->multitoken(), "Tax")
;

try {

po::store(
po::command_line_parser(argc, argv).
options(m_Desc).
positional(m_Pos).
run(),
m_Vm);

ifstream config(m_Vm["settings"].as<string>(), ifstream::in);

if(config) {
po::store(
po::parse_config_file(config, m_Desc),
m_Vm);

}

if (m_Vm.count("help")) {
Usage();
return;
}

po::notify(m_Vm);

} catch(const po::error &e) {
throw MyCustomException(e.what());
}

用户配置:

// config.ini
tax = gst|7
tax = vat|5

// What happens:
$ ./a.out --tax another|3
Tax:
another|3

$ ./a.out
Tax:
gst|7
vat|5

// What I'd like:
$ ./a.out --tax another|3
Tax:
gst|7
another|3
vat|5

$ ./a.out
Tax:
gst|7
vat|5

我如何自定义 boost PO 以合并多 token 选项而不是覆盖?

我试过将命令行和配置文件中的选项存储在单独的变量映射中,然后合并,但这成为我的其他命令行选项的问题。

最佳答案

您正在寻找的值函数是 ->composing() :

("settings,s", 
po::value<string>("FILE")->default_value("~/.config.ini")->multitoken()->composing(),
"Settings")

("tax,t",
po::value<vector<string>>("name|rate")->multitoken()->composing(),
"Tax")

关于c++ - boost 程序选项 - 将 multitoken 选项从配置文件附加到命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32975236/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com