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 库 - 如何将一个选项的输出用于下一个选项