| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Из строки - массив double'ов ? |
| Автор: Liner 28.1.2005, 17:57 |
| Здравствуйте! Есть такая задача. Есть строка вида "*f*f*f*f...", где: f - например, "-1234.567" * - набор символов не являющихся '-', '.', цифрой. Нужно вернуть массив чисел. Сейчас double *getDoubles(char *source, int &numcount) работает в лоб: узнает, сколько подстрок-чисел, где они начинаются, где кончаются, и эти "числа" уже atoi-тятся в элементы возвращаемого функцией массива. А как-то красивее и, наверно, быстрее это сделать можно, может через sscanf как-нибудь? Спасибо. |
| Автор: Dov 29.1.2005, 01:00 | ||
А если так попробовать
p.s. На быстроту не проверял. p.p.s На красоту тем более. |
| Автор: Liner 29.1.2005, 15:27 | ||||
| Спасибо! Но т.к. мне нельзя терять source, я изменил вашу ф-ю так:
Почитал немного о sscanf, придумал такой вариант:
Но ваш, без моих добавлений, работает за 60 сек. миллион вызовов, а мой - за 80 сек. А со strdup, без free, работает также за 80 секунд, но, естесственно, идут resource leak'и. Мне время очень важно, можно ли как-то по-другому не убивать source? Или у меня чего-нибудь можно оптимизировать? Спасибо. |
| Автор: sergejzr 29.1.2005, 15:34 | ||
| А в чём проблема? (Мои комментары с SZ)
|
| Автор: Liner 29.1.2005, 16:36 |
| Понял, спасибо |