Решение
Я бы предложил вам использовать цикл вместо регулярного выражения.
Пример
Вот пример, который я подготовил для вас, как реализоватьэто в C ++:
bool splitString(const QString &str, int n, QStringList &list)
{
if (n < 1)
return false;
QString tmp(str);
list.clear();
while (!tmp.isEmpty()) {
list.append(tmp.left(n));
tmp.remove(0, n);
}
return true;
}
Примечание: При желании вы можете использовать QString :: trimmed () , то есть list.append(tmp.left(n).trimmed());
, чтобы избавиться отведущий пробел.
Результат
Тестирование примера с помощью ввода:
QStringList list;
if (splitString("+1.838212011719E+04-1.779050827026E+00 3.725290298462E-09 0.000000000000E+00", 19, list))
qDebug() << list;
дает следующие результаты:
безQString::trimmed()
("+1.838212011719E+04", "-1.779050827026E+00", " 3.725290298462E-09", " 0.000000000000E+00")
с QString::trimmed()
("+1.838212011719E+04", "-1.779050827026E+00", "3.725290298462E-09", "0.000000000000E+00")