Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++] про flex и про "ручной" метод 09.12.04 20:09 Число просмотров: 2668
Автор: LLL <Алексей> Статус: Member
|
> Если хочется реализовывать все самому, то лучше найди > библиотеку регулярных выражений и не мучайся.
Вероятно тут надо было записать "если НЕ хочется"?..
Извиняюсь, что спрашиваю, не читая док по flex'у.
Этому flex'у по барабану, что в обрабатываемых данных есть любые байты, в т.ч. и нулевые?
> Если хочется реализовывать ВСЕ самому, то делай так: ... или даже так:
> > Заводишь массив на 256 элементов и выставляешь там флаги > для всех символов, которые разделяют строки. > Заводишь переменную начало_предыдущей_строки и > инициализируешь ее началом буфера, в котором лежит текст. > В цикле пробегаешь по буферу, считываешь символ c, берешь > флаг из массива флагов по индексу c, если флаг выставлен, > то запоминаешь в начало_предыдущей_строки позицию > следующего символа. ... но перед этим проверяешь по флагу_A, не попадалось ли в закончившейся строке символа 'A'.
Если попадалось, то выводишь строку (от начало_предыдущей_строки до текущей позиции) и сбрасываешь флаг_A.
> Если встретился символ "А", то ... выставляешь флаг_A.
|
|
|