Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Парсинг AnsiString

16K
24 апреля 2006 года
hellt
6 / / 24.04.2006
Здравствуйте, у меня собственно такой вопрос...

есть строка вида x12+x7+x3+x1+1, необходимо получить массив такого плана [12,7,3,1,0]
Как сделать? на JScript решалось все регулярным выражением, а в си кто подскажет?
или может есть другая альтернатива представления полинома ???
8.7K
25 апреля 2006 года
Rubicon
55 / / 28.10.2005
Цитата:
Originally posted by hellt
Здравствуйте, у меня собственно такой вопрос...

есть строка вида x12+x7+x3+x1+1, необходимо получить массив такого плана [12,7,3,1,0]
Как сделать? на JScript решалось все регулярным выражением, а в си кто подскажет?
или может есть другая альтернатива представления полинома ???



задай Delimeter = "+" и парсь с помошью IsDelimeter()потом такжу с х.
А еще проще: проверяй каждый элемент: если попался х, тособирай число до появления + --- тут всего 1 проход по строке.

16K
25 апреля 2006 года
hellt
6 / / 24.04.2006
Спасибо, буду пробовать, так как си начал осваивать совсем недавно.
585
25 апреля 2006 года
honeybeer
297 / / 06.09.2004
Цитата:
Originally posted by hellt
Спасибо, буду пробовать, так как си начал осваивать совсем недавно.


Напиши свой парсер регулярных выражений, или поищи готовые библиотеки.

16K
25 апреля 2006 года
hellt
6 / / 24.04.2006
Цитата:
Originally posted by Rubicon
задай Delimeter = "+" и парсь с помошью IsDelimeter()потом такжу с х.
А еще проще: проверяй каждый элемент: если попался х, тособирай число до появления + --- тут всего 1 проход по строке.



А ты не мог бы показать как это выглядит?? собирание числа до знака +
А то мне трудно сообразить..:angel:

294
26 апреля 2006 года
Plisteron
982 / / 29.08.2003
Цитата:
Originally posted by hellt
Здравствуйте, у меня собственно такой вопрос...

есть строка вида x12+x7+x3+x1+1, необходимо получить массив такого плана [12,7,3,1,0]
Как сделать? на JScript решалось все регулярным выражением, а в си кто подскажет?
или может есть другая альтернатива представления полинома ???


Можно и в C++ регулярным выражением. См., например, библиотеку C++ Boost

16K
26 апреля 2006 года
hellt
6 / / 24.04.2006
Цитата:
Originally posted by Plisteron
Можно и в C++ регулярным выражением. См., например, библиотеку C++ Boost



я скачал этот мегаПАк.. но вот как его установить.. разобраться не смог =(

317
03 мая 2006 года
Relax
573 / / 20.09.2000
ах как мы любим VCL! можно же на чистом C это сделать. ну или почти на чистом...

String str = "x12+x7+x3+x1+1";
int a, b, c, d, e;
sscanf(str.c_str(), "x%d+x%d+x%d+x%d+%d", &a, &b, &c, &d, &e);

и все будет :)
335
03 мая 2006 года
enola
379 / / 25.01.2005
Цитата:
Originally posted by Relax
ах как мы любим VCL! можно же на чистом C это сделать. ну или почти на чистом...

String str = "x12+x7+x3+x1+1";
int a, b, c, d, e;
sscanf(str.c_str(), "x%d+x%d+x%d+x%d+%d", &a, &b, &c, &d, &e);

и все будет :)



почти :)
Если честно я не знаю почему народ так не любит VCL, ИМХО люди которые писали его не глупые.

317
03 мая 2006 года
Relax
573 / / 20.09.2000
Цитата:
Originally posted by enola
почти :)
Если честно я не знаю почему народ так не любит VCL, ИМХО люди которые писали его не глупые.


да все его любят! :) по крайне мере все кто программит на Билдере. VCL и делает нашу любимую среду такой удобной, но (!) я о том, что нельзя же забывать о корнях... ну, согласись, реализация данной задачи через sscanf ведь проще, чем через IsDelimeter()!

З.Ы. что-то мы от темы отвлеклись :))

246
03 мая 2006 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by Relax
ах как мы любим VCL! можно же на чистом C это сделать. ну или почти на чистом...

String str = "x12+x7+x3+x1+1";
int a, b, c, d, e;
sscanf(str.c_str(), "x%d+x%d+x%d+x%d+%d", &a, &b, &c, &d, &e);

и все будет :)


А причем в "чистом С" String str?

317
03 мая 2006 года
Relax
573 / / 20.09.2000
Цитата:
Originally posted by GIZMO
А причем в "чистом С" String str?



вот поэтому и написал "почти", а вообще - ведь неизвестно как получается строка - может из файла считывается, может прямо с консоли. а фраза "на чистом С" относится к использованию scanf вместо функций класса AnsiString

929
03 мая 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by Relax
ах как мы любим VCL! можно же на чистом C это сделать. ну или почти на чистом...

String str = "x12+x7+x3+x1+1";
int a, b, c, d, e;
sscanf(str.c_str(), "x%d+x%d+x%d+x%d+%d", &a, &b, &c, &d, &e);

и все будет :)


Надо еще у автора уточнить, всегда ли количество слагаемых 5.

16K
03 мая 2006 года
hellt
6 / / 24.04.2006
Цитата:
Originally posted by sp999
Надо еще у автора уточнить, всегда ли количество слагаемых 5.



количество слагаемых, естественно, неограничено..
пользователь вводит полином в Едит. а задача модуля распарсить его как надо.. поэтому я думаю такой вариант, с жестким заданием 5 переменных не пройдет..
Но это уже и не важно, я тут на с# перешел, там есть прелести Регулярных выражений)))

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог