QT c ++中的QStringList

时间:2016-03-29 23:51:15

标签: c++ qt

我想将字符串列表的每个项目分配给另一个字符串列表,例如:

stringlist_1 = ("k*k1*k2" , "s*s1*s2" , "b*b1*b2")

我想让他们像这样:

stringlist_2 = ("k","k","k2")

stringlist_3 = ("s","s1","s2") 

等。

我该怎么做? 我托盘使用此代码

for (int i=0 ; i<2 ; i++)
{
    QStringList d = stringlist_1.value(i).split("*");
    qDebug()<< d ; 
} 

我使用for循环,因为我的列表非常大,但是 问题是将主列表的所有字符串存储在相同的字符串列表中(d)。 如何让fo r循环更改在每个循环中分配给它的字符串列表?

我还能采用另一种方法吗?

2 个答案:

答案 0 :(得分:1)

您可以创建字符串列表向量:

#include <QtCore>

QVector<QStringList> splitTerms(const QStringList & source)
{
   QVector<QStringList> result;
   result.reserve(source.count());
   for (auto src : source)
      result.append(src.split(QChar('*'), QString::SkipEmptyParts));
   return result;
}

int main() {
   qDebug() << splitTerms(QStringList{"k*k1*k2", "s*s1*s2", "b*b1*b2"});
}

输出:

QVector(("k", "k1", "k2"), ("s", "s1", "s2"), ("b", "b1", "b2"))

答案 1 :(得分:0)

你可以拆分它并再次分配吗?

 for (int i=0 ; i<2 ; i++)
 {
     QStringList d = stringlist_1.value(i).split("*");
     qDebug()<< d ;
+    foreach (const QString &s, d) {
+        QStringList dd;
+        dd << s;
+        qDebug() << dd;
+    }
 }