gpt4 book ai didi

带有 '='(等号)符号的 C++ 命令行参数

转载 作者:搜寻专家 更新时间:2023-10-31 00:17:55 30 4
gpt4 key购买 nike

如果 C++ 中包含等号,我如何解析命令行选项?一个例子是:

./testApp --parameter1=value1

我使用以下行来检查参数是否存在:

bool cmdOptionExists(char** begin, char** end, const std::string& option)
{
return std::find(begin, end, option) != end;
}

但是,如果参数包含等号,这将返回 false for

cmdOptionExists(argv, argv+argc, "parameter1");

均匀打印:

for(int i=0;i<argc;i++)
printf("Argument: %s\n", argv[i]);

不包括参数 1 的任何指示。然而,删除等号将正确打印。

最佳答案

argv 中的命令行选项以空格分隔。因此,您要么必须自己检测 key=value 选项,要么使用命令行解析器。我建议 Boost::Program Options .

例子:

namespace po = boost::program_options;
po::options_description desc("Allowed options");
desc.add_options()
("foo", po::value<std::string>(), "do bar")
;

po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);

std::string foo;

if (vm.count("foo")) {
foo = vm["foo"].as<std::string>();
} else {
throw("Foo not set.");
}

关于带有 '='(等号)符号的 C++ 命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12210671/

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