crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QString::arg, для шаблона, в котором неизвестное количество параметров
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Tonal Дата 4.9.2008, 19:11
  Может так:
QString applay(QString pattern, const int args[], size_t count) {
  for (const int* cur = args, *end = args + count; cur != end; ++cur)
    pattern = pattern.arg(*cur);
  return pattern;
}
ViGOur Дата 4.9.2008, 15:27
  Пока решил сделать так, грубый пример:
// Для наглядности заполняем
    QString szList[32];
    QString szTest;
    for( int n = 0; n < 32; ++n )
    {
        QString sz = "Item" + QString::number( n);
        szList[n] = sz;
        szTest+=" -- %" + QString::number( n+1);
    }
    
    // Вот и решение, на данный момент по крайней мере. :)
    for( int n = 32; n > 0; --n)
    {
        QString szn = "%" + QString::number( n);
        szTest.replace( szn, szList[n-1]);
    }
ViGOur Дата 4.9.2008, 14:35
  Есть некоторые данные, которые мне нужно отпарсить. При разборе эти данных, у меня может быть получено от 1 до n параметров.
В зависимости от количества параметров выбирается шаблон, например: -- %1 -- %2 --%3
Думал сначала использовать QString::arg, но там нужно явно знать количество параметров, а я не знаю.
В ручную как вы понимаете их перечислять, вроде этого:
QString("-- %1 ").arg(i1);
QString("-- %1 -- %2").arg(i1).arg(i2);
QString("-- %1 -- %2 -- %3").arg(i1).arg(i2).arg(i3);
// ...
QString("-- %n ").arg(in);
как-то не спортивно. :)

Да, строки вроде "-- %1 " и "-- %1 -- %2" не я создаю, это шаблоны...
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 19.4.2024, 22:40