gpt4 book ai didi

c++ - 获取命令行选项

转载 作者:太空狗 更新时间:2023-10-29 21:35:18 24 4
gpt4 key购买 nike

我想解析具有特定格式的命令行选项以获取值。函数如下

char* getCmdOption(char** begin,
char** end,
const std::string& option)
{
char** itr = std::find(begin, end, option);

if (itr != end && ++itr != end)
{
return *itr;
}
return (char*)"";
}

传递的参数是getCmdOption(argv, argv+argc, "--optionName")该代码适用于所有选项并提供正确的输出,但如果我想提供诸如 Application.exe --optionName surname="O Kief" 之类的值,代码应该返回我 surname= "O Kief" 但它返回 "surname=O Keif"

输入格式为 Application.exe --optionName optionValue 预期输出为 "optionValue"

逻辑上可能有什么问题?我该如何处理我提到的案例?

最佳答案

""是让命令解释器 (cmd.exe) 将整个双引号字符串视为单个参数的唯一方法。然而,遗憾的是,不仅保留了封闭的双引号(像往常一样),而且双引号也被保留了下来,因此获得预期的字符串是一个两步过程;例如,假设双引号字符串作为第一个参数传递。

Application.exe --optionName option="name"删除封闭的双引号,然后将双引号转换为单引号。请务必在赋值部分周围使用双引号,以防止对值进行不必要的解释。

虽然下面给出了精确的解决方案,但您可以访问this用于深入解决问题(不完全是问题)

如果 optionValue 不包含空格,则保持格式为

Application.exe --optionName "optionValue"

如果选项值包含空格,将引号中的内容包装为

 Application.exe --optionName '"option Value"'

关于c++ - 获取命令行选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43109977/

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