Здравствуйте.
Использую в программе на С++( среда Visual Studio 2003 )библиотеку регулярных выражений PCRE в виде DLL. Проблема заключается в работе с выражениями на русском языке. Ниже приведен пример:
#include <tchar.h>
#include <string.h>
#include <locale.h>
#include <stdio.h>
#include "pcre.h"
int _tmain(int argc, _TCHAR* argv[])
{
if( !setlocale( LC_ALL, "Russian_Russia.1251" ) )
{
printf( "Локаль не установлена" );
return 0;
}
const unsigned char* char_tables = pcre_maketables(); //pcre-загрузка текущей локали
char* pattern = "(\\bслово\\b)"; //шаблон
const char* errstr;
int errchar;
pcre* cmpld_pat = pcre_compile( //компилируем шаблон
pattern,
PCRE_CASELESS,
&errstr,
&errchar,
char_tables
);
char* str = "Честное слово"; //строка для поиска
int vector[50];
int vsize = 50;
int pairs = pcre_exec( //выполняем поиск на соответствие
cmpld_pat,
NULL,
str,
strlen( str ),
0,
PCRE_NOTEMPTY,
vector,
vsize
);
if( pairs < 0 )
printf( "Соответствие не найдено" );
else
printf( "Соответствие найдено" );
return 0;
}
Функция setlocale отрабатывает нормально, локаль устанавливается. А вот соответствие не обнаруживается.
Если используется латинница, то все работает. Подскажите, пожалуйста, в чем может быть проблема?