Привет всем... собственно сабж
Расскажу подробней... у меня стоит задача разбора сообщений SWIFT орентированного формата. Собственно мне сей разбор задолбало делать — хочу написать хорошую dll или библиотеку dll в который вынести сей таск и потом везде юзать (и не только я буду юзать).
пример файла:
"SOH/001/01/050411
{1:/050411/00001OP00000/005041112310007F}...{4:
:20:0504111231036022
:12:331
...
...
-}{5:/BE901BA6}
...
ETX
{5:/38B017BD}"
например на вход подается такоее собщение "{1:/050411/00001OP00000/005041112310007F}...-}{5:/BE901BA6}" На выходе надо получить масив
Block1.1 — 050411
Block1.2 — 00001OP00000
...
RefNum.1 — 0504111231036022
...
Думаю сие написать на С++ с подключением Regex (класс регулярных выражений с .Net) но собственно опыта в этой сфере большого не имею + желательно юзание сих dll в других средах (Delphi,Java и т.д.)
если кто может подсказать как сие лучше организовать (если есть время — пожалуйста объясните в деталях) или подсказать где можно найти понятные доки по этой теме (msdn я замучался колупать... (может мне кажется но в VS 6.0 мсдн был гораздо понятней)).
Зарание большое спасибо.
З.Ы. приму советы по всем стадиям и деталям процесса — от организации внутреннего взаимодействия до форматов входных-выходных параметров.
Здравствуйте, Аноним, Вы писали:
А>Привет всем... собственно сабж
boost::regex

Самое простое — посмотреть на интерфейс, что выставляет этот класс и написать вокруг него класс-обертку, наследующий интерфейс, коим и будут пользоваться все клиенты.
Если сделать комовый модуль, то что-то вроде этого :
interface IRegex
{
// _matches - any collection of strings, for example SAFEARRAY of BSTR
STDMETHOD(Parse)([in] BSTR _regex, [in] BSTR _text, [in] VARIANT _params, [out,retval] VARIANT* _matches)=0;
};
Ещё один вариант — в ATL есть CAtlRegExp. Он конечно не такой мощный как бустовский, но для твоих задач его запросто может хватить.
... << RSDN@Home 1.2.0 alpha rev. 676>>
Здравствуйте, Andrew_D, Вы писали:
A_D>boost::regex
а regex из .Net не катит?
гмм.. нашел тесты
http://www.solarix.ru/for_developers/cpp/boost/regex/en/vc71-performance.shtml
там лучше всех показала Грета
http://research.microsoft.com/projects/greta/
цитата из мануала "GRETA is about 7 times faster than the regex library in boost (
http://www.boost.org), and about 10 times faster than the regular expression classes in ATL7. "
Здравствуйте, InTO, Вы писали:
ITO>Здравствуйте, Andrew_D, Вы писали:
A_D>>boost::regex
ITO>а regex из .Net не катит?
Если есть возможность тащить с собой framework, то почему бы и нет?
Здравствуйте, InTO, Вы писали:
ITO>гмм.. нашел тесты http://www.solarix.ru/for_developers/cpp/boost/regex/en/vc71-performance.shtml
ITO>там лучше всех показала Грета http://research.microsoft.com/projects/greta/
ITO>цитата из мануала "GRETA is about 7 times faster than the regex library in boost (http://www.boost.org), and about 10 times faster than the regular expression classes in ATL7. "
Хм ... судя по тестам однозначно говорить о превосходстве Греты нельзя.