|
本帖最后由 angelus 于 2017-11-1 12:33 编辑
QString pattern("X(\\d{1,3})Y(\\d{1,3})W(\\d{1,3})H(\\d{1,3})");
QString str("CATEGORY:2 SET:1 SEQ:18 FRAME:1 DETECTIONS:4 X261Y343W109H109 X676Y348W55H55 X561Y343W54H54 X464Y343W54H54");
QList<QList<int> > getStr(const QString &pattern,const QString &data)
{
QList<QList<int> > list;
QRegExp rx(pattern);
int pos = 0;
while(true)
{
pos = data.indexOf(rx,pos);
if(pos < 0) break;
pos += rx.matchedLength();
QStringList temp = rx.capturedTexts();
QList<int> intList;
for(int i= 1; i < temp.count(); ++i)
{
intList.append(rx.cap(i).toInt());
}
list.append(intList);
}
return list;
}
这个是根据你的要求改良后的,直接取数值的函数
输出是这样的:
((261, 343, 109, 109), (676, 348, 55, 55), (561, 343, 54, 54), (464, 343, 54, 54))
你根据你的程序进行修改,可以自己定义一个类或者结构,代替QList<int>; |
|