gpt4 book ai didi

c++ - Boost.Program_options : Forward parameters after '--' to another program

转载 作者:行者123 更新时间:2023-12-01 19:30:14 24 4
gpt4 key购买 nike

我正在编写一个 C++ 应用程序 A,它在后台调用另一个应用程序 B。某些命令行选项适用于应用程序A,但某些命令行选项应转发至B。分隔应使用双破折号 --

例如:

./my_executable_A -a --long_b some_file -- -c --long_d

应解析应用程序 A 中的 {"-a", "--long_b", "some_file"} 并转发 {"-c", "--long_d"} 当应用程序BA调用时。

我认为使用 boost::program_options 来完成任务可能有意义,但我没有找到此功能。这可能吗?

注意:用例是一个 libfuse 文件系统,其中一些选项将转发到 fuse_main() 函数。

最佳答案

这是默认行为(如果未记录),并且至少自 Boost 1.33 起一直如此; -- is considered a "terminator"以及其后的所有命令行参数都可以通过 positional options 访问:

bool a = false, b = false;
std::vector<std::string> command;
po::options_description desc("Allowed options");
desc.add_options()
("long_a,a", po::bool_switch(&a), "a")
("long_b,b", po::bool_switch(&b), "b")
("command", po::value(&command));
po::positional_options_description p;
p.add("command", -1);
po::variables_map vm;
po::parsed_options parsed = po::command_line_parser(argc, argv).options(desc).positional(p).run();
po::store(parsed, vm);
po::notify(vm);

关于c++ - Boost.Program_options : Forward parameters after '--' to another program,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32822076/

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