2015-07-10 3 views
0

Есть ли простой способ создать QList<QString> от QList<std::string>?Конвертировать QList <std::string> в QList <QString>

(без итерация QList<std::string> и добавление каждого элемента к QList<QString>)

+0

Единственный способ - создать новый QList и перебрать его. Вы могли бы использовать некоторые общие алгоритмы в STL для этого. – njaard

+0

Почему вы не хотите повторять итерацию? – cmannett85

ответ

1

Ответ НЕТ. Как вы могли преобразовать один в другой без повторения? Даже если вы используете какие-то функции, это будет повторяться через список.

0

Вы не можете сделать это без повторения в своем списке. Вы все еще можете сделать это эффективно, избегая ненужные копии и перераспределения:

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)); 
Смежные вопросы