Windows для профессионалов


         

Они реализованы как макросы, вызывающие


/p> Они реализованы как макросы, вызывающие либо Unicode-, либо ANSI-версию функции в зависимости от того, определен ли UNICODE при компиляции исходного модуля Например, если UNICODE не определен, lstrcat раскрывается в lstrcatA, определен — в lstrcatW.

Строковые функции lstrcmp и lstrcmpi ведут себя не так, как их аналоги из библиотеки С (strcmp, strcmpi, wcscmp и wcscmpf), которые просто сравнивают кодовые позиции в символах строк. Игнорируя фактические символы, они сравнивают числовое значение каждого символа первой строки с числовым значением символа второй строки. Но lstrcmp и lstrcmpi реализованы через вызовы Windows-функции CompareString:

int CompareString(
LCID lcid,
DWORD fdwStyle,
PCWSTR pString1,
int cch1,
PCWSTR pString2,
int cch2);

Она сравнивает две Unicode-строки. Первый параметр задаст так называемый идентификатор локализации (locale ID, LCID) — 32-битное значение, определяющее конкретный язык. С помощью этого идентификатора CompareString сравнивает строки с учетом значения конкретных символов в данном языке. Так что она действует куда осмысленнее, чем функции библиотеки С.

Когда любая из функций семейства lstrcmp вызывает CompareString, в первом параметре передается результат вызова Windows-функции GetThreadLocale.

LCID GetThreadLocale();

Она возвращает уже упомянутый идентификатор, который назначается потоку в момент его создания.

Второй параметр функции CompareString указывает флаги, модифицирующие метод сравнения строк. Допустимые флаги перечислены в следующей таблице.













































Флаг



Действие



NORM_IGNORECASE



Различия в регистре букв игнорируются



NORM_IGNOREKANATYPE



Различия между знаками хираганы и катаканы игнорируются



NORM_IGNORENONSPACE



Знаки, отличные от пробелов, игнорируются



NORM_IGNORESYMBOLS



Символы, отличные от алфавитно-цифровых, игнорируются



NORM_IGNOREWIDTH



Разница между одно- и двухбайтовым представлением одного
и того же символа игнорируется



SORT_STRINGSORT



Знаки препинания обрабатываются так же, как и символы, от-
личные от алфавитно-цифровых

<

Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий