Есть ли простой способ создать QList<QString>
от QList<std::string>
?Конвертировать QList <std::string> в QList <QString>
(без итерация QList<std::string>
и добавление каждого элемента к QList<QString>
)
Есть ли простой способ создать QList<QString>
от QList<std::string>
?Конвертировать QList <std::string> в QList <QString>
(без итерация QList<std::string>
и добавление каждого элемента к QList<QString>
)
Ответ НЕТ. Как вы могли преобразовать один в другой без повторения? Даже если вы используете какие-то функции, это будет повторяться через список.
Вы не можете сделать это без повторения в своем списке. Вы все еще можете сделать это эффективно, избегая ненужные копии и перераспределения:
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));
Единственный способ - создать новый QList и перебрать его. Вы могли бы использовать некоторые общие алгоритмы в STL для этого. – njaard
Почему вы не хотите повторять итерацию? – cmannett85