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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QString и парсер  (Прочитано 4022 раз)
rudireg
Гость
« : Март 16, 2013, 10:49 »

ПРивет уважаемые
подскажите наиболее изящное решение данной заданичи
Имеется строка
QString str = "Hello=world? fromrudi";
Задача: спарсить строку world
Как это сделать наиболее коротко.

Записан
Dancing_on_water
Гость
« Ответ #1 : Март 16, 2013, 10:58 »

Если подобных вывзовов дохрена, то быстрее всего будет работать поиск ключевых символов по подстроке. Если нет, то юзайте QRegExp
Записан
rudireg
Гость
« Ответ #2 : Март 16, 2013, 11:18 »

Нашел метод вроде, не знаю на сколько он скоростной,
но если часто приходиться парсить строки, придется писать обертку для QString
так как данный вид записи очень громоздкий
Код:
    QString str = "Hello=world? fromrudi";
    int start = str.indexOf("o=");
    start += QString("o=").size();
    int end = str.indexOf("? f");
    QString rezult = str.mid(start, end - start);
« Последнее редактирование: Март 16, 2013, 11:20 от rudireg » Записан
Bepec
Гость
« Ответ #3 : Март 16, 2013, 11:21 »

Если нет жёстких требований к ресурсам, используй regExp.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Март 16, 2013, 11:33 »

Нашел метод вроде, не знаю на сколько он скоростной,
но если часто приходиться парсить строки, придется писать обертку для QString
так как данный вид записи очень громоздкий
Зато понятно что Вы делаете. Выделить в ф-цию, предусмотреть что префикса/суффикса может не быть и upper case - вполне норм. Неясно откуда возьмете "o=" и "? f" и почему уверены что их в строке совсем не по одному - ну то уже Ваше дело
Записан
rudireg
Гость
« Ответ #5 : Март 16, 2013, 12:10 »

Неясно откуда возьмете "o=" и "? f" и почему уверены что их в строке совсем не по одному - ну то уже
[/quote]
Это нужно будет обрабатывать обязательно
действительно могут быть повторы меток
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Март 16, 2013, 12:58 »

если интересует решение через регулярки:
Код
C++ (Qt)
QRegExp re("=(.+)\\?");
re.setMinimal(true);
if (re.indexIn(str) != -1)
   QString result = re.cap(1);
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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