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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как распарсить строку  (Прочитано 8341 раз)
smackthat
Гость
« : Февраль 11, 2011, 21:49 »

Есть строка например:
Код:
QString str("USDCAD15");
Как мне с нее достать строку и число и впихнуть их в переменные? Что-то такое:
Код:
QString str("USDCAD15");
QString symbol;
int period;

sscanf(str,"%s%d",symbol,period);
« Последнее редактирование: Февраль 11, 2011, 22:02 от smackthat » Записан
SimpleSunny
Гость
« Ответ #1 : Февраль 11, 2011, 22:04 »

Если длина числа постоянна, то
Код
C++ (Qt)
int p = str.right(2).toInt();
QString s = str.left(str.length() - 2);

Иначе QRegExp
Код
C++ (Qt)
QRegExp r("([a-z]+)([0-9]+)");
r.indexIn(str);
 
int p = r.cap(2).toInt();
QString s = r.cap(1);
Записан
maint
Гость
« Ответ #2 : Февраль 12, 2011, 08:29 »

QString str("USDCAD15");
QString symbol;
int period;

sscanf(str.toStdString().c_str(),"%6s%d",symbol,period);
Записан
eugene
Гость
« Ответ #3 : Февраль 12, 2011, 10:12 »

Наскока я помню в валютах в названиях цифры не встречаются, поэтому можно найти первую цифру в строке и разделить её через left, right, mid. Будет работать даже если длина разная
Записан
trot
Гость
« Ответ #4 : Февраль 12, 2011, 10:25 »

Необходимо использовать регулярные выражения и соответствующий класс QReqExp
Записан
smackthat
Гость
« Ответ #5 : Февраль 12, 2011, 11:55 »

спасибо за ответы, есть из чего выбрать  Улыбающийся
Наскока я помню в валютах в названиях цифры не встречаются, поэтому можно найти первую цифру в строке и разделить её через left, right, mid. Будет работать даже если длина разная
это у меня названия файлов идут, сначала валюта, потом таймфрейм
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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