Russian Qt Forum

Qt => Общие вопросы => Тема начата: White Owl от Март 03, 2009, 19:33



Название: Как превратить QList<int> в QString
Отправлено: White Owl от Март 03, 2009, 19:33
Мне почему-то кажется, что задача превращения QList<T> в строку достоточно частая и неоднократно решавшаяся.
Но единственный метод решения который я вижу это самому вручную делать цикл.
Есть более короткие решения?


Название: Re: Как превратить QList<int> в QString
Отправлено: spirit от Март 03, 2009, 19:41
есть метод join, но он только в QStringList, а так придется самому, в цикле.


Название: Re: Как превратить QList<int> в QString
Отправлено: Dendy от Март 03, 2009, 20:59
Не ясно по какому критерию превращать список в строку, боюсь задача неоднозначная.


Название: Re: Как превратить QList<int> в QString
Отправлено: Rcus от Март 03, 2009, 21:19
Ну впринципе можно взять немного синтаксического сахара функторов и boost::bind и сделать общую реализацию, но это будет overkill


Название: Re: Как превратить QList<int> в QString
Отправлено: White Owl от Март 03, 2009, 23:34
Не ясно по какому критерию превращать список в строку, боюсь задача неоднозначная.
А что там неоднозначного? Перечислить все элементы списка через разделитель. Есть еще варианты?

Самое краткое по коду что придумалось:
Код:
QList<int> intList;
intList << 1 << 2 << 3;

QStringList sl;
foreach(int n, intlist) sl << QString("%1").arg(n);
QString resultString = sl.join(",");
Для композитных типов цикл можно написать примерно так:
Код:
foreach(someClass *obj, listOfObjects) sl << obj->toString();


Название: Re: Как превратить QList<int> в QString
Отправлено: ритт от Март 03, 2009, 23:36
QString("%1").arg(n) :)


Название: Re: Как превратить QList<int> в QString
Отправлено: White Owl от Март 04, 2009, 00:38
QString("%1").arg(n) :)
ээээ?


Название: Re: Как превратить QList<int> в QString
Отправлено: ритт от Март 04, 2009, 02:24
QString::number(n)


Название: Re: Как превратить QList<int> в QString
Отправлено: White Owl от Март 04, 2009, 23:35
У QString нету метода number(), есть setNum().
Впрочем, для основной задачи это не критично.
Код:
QList<int> intList;
intList << 1 << 2 << 3;

QStringList sl;
foreach(int n, intlist) sl << QString::setNum(n);
QString resultString = sl.join(",");
От цикла и дополнительного списка все равно не избавились :(


Название: Re: Как превратить QList<int> в QString
Отправлено: ритт от Март 05, 2009, 00:34
Цитировать
QString QString::number ( long n, int base = 10 )   [static]

Returns a string equivalent of the number n according to the specified base.

The base is 10 by default and must be between 2 and 36. For bases other than 10, n is treated as an unsigned integer.

Код:
     long a = 63;
     QString s = QString::number(a, 16);             // s == "3f"
     QString t = QString::number(a, 16).toUpper();     // t == "3F"

разделять числа в строке запятыми - не есть гут. вспомните любимый разделитель чисел для *.ru_RU

зы. в русском языке нет слова "нету"