Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.15.171.202] |
|
Сообщ.
#1
,
|
|
|
Тебуется из фразы содержащей русские и английские символы извлечь слово LH(HL) (к примеру):
CAtlRegExp<> regExp; CAtlREMatchContext<> mc; regExp.Parse("{[ ][LH]+[ \n]}"); CString str1 = "фара LH\n"; if(regExp.Match(str1, &mc)) TRACE("TRUE\n"); else TRACE("FALSE\n"); Если это делать без использования скобок [], то работает, правда приходится по другому записывать. А в приведенном выше примери при выполнении вылетает ошибка (материца на символ 'ф'): код из файла atlrx.h (строка на которую ругается, помечена коментарием) case RE_RANGE: { if (*sz == '\0') { ip = (size_t) pContext->Pop(); break; } unsigned char *pBits = (unsigned char *) (&m_Instructions[ip]+1); size_t u = (size_t) *sz; if (pBits[u >> 3] & 1 << (u & 0x7)) // маты на эту строку, при этом дебагер пишет что переменная *sz содержит: -12'ф' { ip += InstructionsPerRangeBitField(); ip++; sz = CharTraits::Next(sz); } else { ip = (size_t) pContext->Pop(); } } break; Добавлено Еще у меня почему-то код русских символов, отрицательный. Может это как-то связано с верхним вопросом? len = str.GetLength(); for(short i=0;i<len;i++) { //получаем код символа code = (int)str.GetAt(i); TRACE("%d\n",code); } Для русских символов, выводит отрицательные значения. |