【问题标题】:How to add items from multiple QStringLists to one?如何将多个 QStringLists 中的项目添加到一个?
【发布时间】:2019-11-25 04:21:04
【问题描述】:

如果我有几个QStringLists,例如:

QStringList str1 = {"name1", "name2", "name3"};
QStringList str2 = {"value1", "value2", "value3"};
QStringList str3 = {"add1", "add2", "add3"};

有没有办法获得类似QStringList listAll; 的列表列表(嵌套列表),如下所示:

(("name1","value1","add1"),("name2","value2","add2"),("name3","value3","add3"))

【问题讨论】:

  • @eyllanesc 我得到 QVector(("name1", "name2", "name3"), ("value1", "value2", "value3"), ("add1", "add2" , "add3"))
  • @ImNew 您的主要要求是什么?你有很多选择来实现同样的目标。 QVector 是另一种选择。但是您在问题中提到了QList

标签: c++ qt data-structures qvector qstringlist


【解决方案1】:

从评论看来,您正在尝试将字符串列表打包到 QVector 而不是 QList。在这种情况下,只需遍历 QStringList 并将从相等索引创建的字符串列表附加到向量。

#include <QVector>

QVector<QStringList> allList;
allList.reserve(str1.size()); // reserve the memory

for(int idx{0}; idx < str1.size(); ++idx)
{
    allList.append({str1[idx], str2[idx], str3[idx]});
}

【讨论】:

  • 再次,我得到 QVector(("name1", "name2", "name3"), ("value1", "value2", "value3"), ("add1", "add2" , "add3"))... 我需要从每个 QStringList 中取出第一个项目并将其放在嵌套列表中的第一个位置(第一个列表),对于每个 QStringList 中的第二个项目也是如此,依此类推以获得什么我在第一篇文章中写道。
  • @ImNew 在这种情况下,您需要遍历 QStringList 并填充向量。我会更新答案。
【解决方案2】:

你不需要一个向量,继续使用 StringList

QStringList str1={"name1", "name2", "name3"};
QStringList str2={"value1", "value2", "value3"};
QStringList str3={"add1", "add2", "add3"};

QStringList r{};
// use elegantly the << operator and the join method instead... ?
r << str1.join(",") << str2.join(",") << str3.join(",");
qDebug() << "result : " << r.join(";");

//result:
//"name1,name2,name3;value1,value2,value3;add1,add2,add3"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 2020-10-05
    • 2022-11-12
    • 2021-03-08
    相关资源
    最近更新 更多