Russian Qt Forum
Ноябрь 25, 2024, 15:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как превратить QList<int> в QString  (Прочитано 12153 раз)
White Owl
Гость
« : Март 03, 2009, 19:33 »

Мне почему-то кажется, что задача превращения QList<T> в строку достоточно частая и неоднократно решавшаяся.
Но единственный метод решения который я вижу это самому вручную делать цикл.
Есть более короткие решения?
Записан
spirit
Гость
« Ответ #1 : Март 03, 2009, 19:41 »

есть метод join, но он только в QStringList, а так придется самому, в цикле.
Записан
Dendy
Гость
« Ответ #2 : Март 03, 2009, 20:59 »

Не ясно по какому критерию превращать список в строку, боюсь задача неоднозначная.
Записан
Rcus
Гость
« Ответ #3 : Март 03, 2009, 21:19 »

Ну впринципе можно взять немного синтаксического сахара функторов и boost::bind и сделать общую реализацию, но это будет overkill
Записан
White Owl
Гость
« Ответ #4 : Март 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();
Записан
ритт
Гость
« Ответ #5 : Март 03, 2009, 23:36 »

QString("%1").arg(n) Улыбающийся
Записан
White Owl
Гость
« Ответ #6 : Март 04, 2009, 00:38 »

QString("%1").arg(n) Улыбающийся
ээээ?
Записан
ритт
Гость
« Ответ #7 : Март 04, 2009, 02:24 »

QString::number(n)
Записан
White Owl
Гость
« Ответ #8 : Март 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(",");
От цикла и дополнительного списка все равно не избавились Грустный
Записан
ритт
Гость
« Ответ #9 : Март 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

зы. в русском языке нет слова "нету"
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 21.