CommandLineParser 不接受内部带有减号的参数

Posted

技术标签:

【中文标题】CommandLineParser 不接受内部带有减号的参数【英文标题】:CommandLineParser does not accept arguments with minus characters inside 【发布时间】:2021-08-03 17:20:03 【问题描述】:

这是我的main.cpp源代码:

#include <iostream>
#include <string>
using namespace std;

#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
using namespace cv;

const char* keys = 
    "@command  ||"
    "@input    ||"
    "@argument ||"
;

int main(int argc, const char** argv) 
    CommandLineParser parser(argc, argv, keys);

    String param0 = parser.get<String>(0);
    String param1 = parser.get<String>(1);
    String param2 = parser.get<String>(2);

    cout << param0 << " | " << param1 << " | " << param2;

    return 0;

当我像这样运行这段代码时:

./main --bright ./image.png -10

我希望输出是:

--bright | ./image.png | -10

但输出是:

./image.png |  |

我不知道如何解决它。请帮帮我,谢谢。

【问题讨论】:

可能是您的 shell 在命令行上使用 | 的问题。 【参考方案1】:

您可以在开始之前查看CommandLineParser 文档。

如果您只是将这 3 行更改为以下一行,您将获得所需的输出:

cv::String param0 = cv::String(argv[1]);
cv::String param1 = cv::String(argv[2]);
cv::String param2 = cv::String(argv[3]);

其实argv是一个数组,里面存放着你在终端输入的所有命令单元。

【讨论】:

这只是规避 OpenCV 的CommandLineParser。它没有解释如何with CommandLineParser. 实现所需的行为

以上是关于CommandLineParser 不接受内部带有减号的参数的主要内容,如果未能解决你的问题,请参考以下文章

CommandLineParser - 如果没有给出开关,则显示 --help 结果

CommandLineParser 库 - 如何将一个选项的输出用于下一个选项

C#CommandLineParser

带有内部树的访客设计模式

[C++][原创]opencv中CommandLineParser使用

[C++][原创]opencv中CommandLineParser使用