Russian Qt Forum

Qt => Вопросы новичков => Тема начата: smackthat от Февраль 11, 2011, 21:49



Название: Как распарсить строку
Отправлено: smackthat от Февраль 11, 2011, 21:49
Есть строка например:
Код:
QString str("USDCAD15");
Как мне с нее достать строку и число и впихнуть их в переменные? Что-то такое:
Код:
QString str("USDCAD15");
QString symbol;
int period;

sscanf(str,"%s%d",symbol,period);


Название: Re: Как распарсить строку
Отправлено: SimpleSunny от Февраль 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);


Название: Re: Как распарсить строку
Отправлено: maint от Февраль 12, 2011, 08:29
QString str("USDCAD15");
QString symbol;
int period;

sscanf(str.toStdString().c_str(),"%6s%d",symbol,period);


Название: Re: Как распарсить строку
Отправлено: eugene от Февраль 12, 2011, 10:12
Наскока я помню в валютах в названиях цифры не встречаются, поэтому можно найти первую цифру в строке и разделить её через left, right, mid. Будет работать даже если длина разная


Название: Re: Как распарсить строку
Отправлено: trot от Февраль 12, 2011, 10:25
Необходимо использовать регулярные выражения и соответствующий класс QReqExp


Название: Re: Как распарсить строку
Отправлено: smackthat от Февраль 12, 2011, 11:55
спасибо за ответы, есть из чего выбрать  :)
Наскока я помню в валютах в названиях цифры не встречаются, поэтому можно найти первую цифру в строке и разделить её через left, right, mid. Будет работать даже если длина разная
это у меня названия файлов идут, сначала валюта, потом таймфрейм