说明
有时一些C++小工具懒得做界面又要传入参数的时候,就使用CommandLineParser类来实现这个功能。
示例代码
#include <QCoreApplication>
#include "ShowNum.h"
#include "GenenrateNumber.h"
const char* keys =
"{help h | | Print help message. }"
"{sleepSec sleep |1| Path to save img grap by hik canmera}"
"{COM COM |COM3| start Num of img}"
"{strIP ip |192.168.0.242| camera IP,default IP is 192.168.0.242}"
"{usrName un |admin| usrName of camera}"
"{passWord pass |admin12345| password of camera}"
"{saveDir dir |G:/NumberData/newSample/LCD/| save dir}"
"{startNum start |0|start Num of img}";
/*
* explicit ShowNum(const int& sleepSec=1,
const QString& COM="COM3",
const QString& IP="192.168.0.242",
const int Port=8000,
const QString& usrName="admin",
const QString& passWd="admin12345",
const QString& saveFolder="E:/Numberdata/",
const int startNum=0);
*/
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
cv::CommandLineParser parser(argc, argv, keys);
float sleepSec=parser.get<float>("sleepSec");
QString COM=QString::fromStdString(parser.get<String>("COM"));
QString strIP=QString::fromStdString(parser.get<String>("strIP"));
int Port=8000;
QString usrName=QString::fromStdString(parser.get<String>("usrName"));
QString passWord=QString::fromStdString(parser.get<String>("passWord"));
QString saveDir=QString::fromStdString(parser.get<String>("saveDir"));
int startNum=parser.get<int>("startNum");
if (!parser.check())
{
parser.printErrors();
return 1;
}
ShowNum test(sleepSec,COM,strIP,Port,usrName,passWord,saveDir,startNum);
test.showStrNum();
return a.exec();
}
补充说明
注意key中的模式是a b|c|d。
a是分组的名字,b是命令行里对应的关键字,c是默认值,d是参数说明。