将QList <std :: string>转换为QList <qstring>

时间:2015-07-10 03:28:20

标签: c++ qt

是否可以通过QList<QString>轻松创建QList<std::string>

(不重复QList<std::string>并将每个元素添加到QList<QString>

2 个答案:

答案 0 :(得分:1)

答案是否定的。如果没有迭代,你怎么可能将一个转换成另一个?即使您正在使用某种功能,也会在列表中进行迭代。

答案 1 :(得分:1)

如果不迭代列表,就无法做到这一点。您仍然可以有效地执行此操作,避免不必要的副本和重新分配:

QList<std::string> listStd;
listStd << "one" << "two" << "three";

QList<QString> listQt;
listQt.reserve(listStd.length());
for(const std::string& s : listStd)
{
    listQt.append(QString::fromStdString(s));
}

// listQt: "one", "two", "three"

如果您不想转换,可能需要将std::string直接保存为QString,从而避免以后需要转换。

QList<QString> lst; // or you can use the typedef QStringList 
....
std::string s = getting_a_std_string_from_this_function();
lst.append(QString::fromStdString(s));