获取命令行选项

时间:2017-03-30 06:19:22

标签: c++

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

C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v4.0\Desktop 

传递的参数是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

逻辑可能有什么问题?我怎么处理我提到的案子?

1 个答案:

答案 0 :(得分:2)

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

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

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

如果optionValue不包含空格,请将格式保留为

Application.exe --optionName "optionValue"

如果选项Value包含空格,则将引用中的东西包装为

 Application.exe --optionName '"option Value"'
相关问题