如何从 space 或 before/after 括号后的 QString 中提取一组数字?

How do I extract a set of numbers from a QString that are after an space or before/after a bracket?

我是 QT 的新手,而不是 C++ 的新手。虽然我不是一个很好的程序员,但我尝试了。 这次想不出办法了

我将做一个 QT 应用程序,我将获得

形式的数据
[1 2 45 345 98 452]

(可能是那样,也可能是 [1,2,45,345,98,452],不知道哪个更容易)

我需要存储在数组中的数字 所以我需要把 1 和 2 和 45 分开等等,还要知道有多少个数字。

有什么想法吗? 到目前为止,我已经将数字与括号分开了。

没关系伙计们,只是想通了。 看

QString myString ="[1 0 12 8 0 12 134]"; //Let's say in data
qDebug() << myString.count(QLatin1Char(' ')); //Counting how many spaces
int size = myString.count(); 
qDebug() << size;
QString newString = myString.mid(1,size-2); //My new string without the []


QRegExp sep("( |,|[|])"); //Regex thingy separating stuff
QStringList list = newString.split(sep);
qDebug() << list;  // TA DA!

有没有更好的方法来实现这一点? 谢谢

一种方法是将 QRegularExpression\d+ 结合使用并遍历每个数字。然后你可以将结果保存在QVector<int>中。

请注意 QRegExp 在 Qt 5+

中已弃用
QString number = "[1 2 45 345 98 452]";
QRegularExpression rx("\d+");
QRegularExpressionMatchIterator i = rx.globalMatch(number);
QVector<int> vec1;
while (i.hasNext()) {
    QRegularExpressionMatch match = i.next();
    vec1.append(match.captured(0).toInt());
}
qDebug() << vec1;

Output QVector(1, 2, 45, 345, 98, 452)