Russian Qt Forum

Программирование => С/C++ => Тема начата: SibBear от Октябрь 07, 2012, 12:10



Название: Парсинг строки
Отправлено: SibBear от Октябрь 07, 2012, 12:10
Добрый день. Есть строка char*, разделенная запятыми. Два значения являются целыми, два других - double. Например:
100,200,123.45,678.90
Как наиболее эффективно распарсить эту строку?


Название: Re: Парсинг строки
Отправлено: Bepec от Октябрь 07, 2012, 12:12
Код:
QString text("11,12,10.2,11.2");
QStringList tmpList = text.split(",");
В результате у тебя массив строк, преобразовывай как хочешь.


Название: Re: Парсинг строки
Отправлено: SibBear от Октябрь 07, 2012, 12:16
К сожалению, программа без Qt, на чистом C++. Я бы написал на другой форум, но раз уж здесь есть такой раздел - почему бы и нет?


Название: Re: Парсинг строки
Отправлено: Igors от Октябрь 07, 2012, 12:27
Есть прекрасная Сишная ф-ция http://www.cplusplus.com/reference/clibrary/cstdlib/strtod/ (http://www.cplusplus.com/reference/clibrary/cstdlib/strtod/) которая делает что надо (и раз в 10 быстрее). Достаточно добавить пару строк в примерчик - и готово 


Название: Re: Парсинг строки
Отправлено: Bepec от Октябрь 07, 2012, 12:32
Извиняюсь раздел не посмотрел :/


Название: Re: Парсинг строки
Отправлено: SibBear от Октябрь 07, 2012, 14:38
Всё, сделал так:

Код:
if(sscanf(str,"%d,%d,%lg,%lg",&a,&b,&c,&d)<4) return false;