Как разбить строку на отдельные массивы?

Рейтинг: 0Ответов: 1Опубликовано: 01.05.2015

Имею вот такой код.

QRegExp rx("(\\\n|\\:|\\;)");
QString myString("login@mail.ru;pass\nlogin2@mail.ru;pass2\nlia@dll:pass3");

QStringList myStringList = myString.split(rx);

for (int index = 0; index < myStringList.length(); index++)
{
    std::cout << "[" << index << "] " << 
                 myStringList.at(index).toStdString() << std::endl;
}

На выходе получаю вот такое:

[0] login@mail.ru
[1] pass
[2] login2@mail.ru
[3] pass2
[4] lia@dll
[5] pass3

Задача состоит в том, чтобы получить массив такого вида:

[0][1] login@mail.ru
[0][2] pass
[1][1] login2@mail.ru
[1][2] pass2

Ответы

▲ 2Принят

Может так?

QRegExp rx("(\\:|\\;)");
QString str("login@mail.ru;pass\nlogin2@mail.ru;pass2\nlia@dll:pass3");

QList<QStringList> result;
foreach(const QString &lst1, str.split(QLatin1Char('\n')))
   result << lst1.split(rx);

В result будет:

(("login@mail.ru", "pass"), ("login2@mail.ru", "pass2"), ("lia@dll", "pass3"))