Функция CompareStringA (winnls.h)

Сравнивает две строки символов для языкового стандарта , заданного идентификатором.

Осторожностью Неправильное использование CompareString может поставить под угрозу безопасность приложения. Строки, которые не сравниваются правильно, могут создавать недопустимые входные данные. Например, функция может вызывать проблемы безопасности при использовании для нелингвистического сравнения, так как две строки, отличающиеся в двоичном представлении, могут быть лингвистически эквивалентны. Приложение должно проверять строки на допустимость перед их использованием и предоставлять обработчики ошибок. Дополнительные сведения см. в разделе Вопросы безопасности: международные функции.
 
Примечание Для совместимости с Юникодом приложения должны предпочесть CompareStringEx или версию Юникода CompareString. Еще одна причина, по которой вы предпочитаете CompareStringEx , заключается в том, что корпорация Майкрософт переходит на использование имен языковых стандартов вместо идентификаторов языкового стандарта для новых языковых стандартов в целях взаимодействия. Любое приложение, которое будет выполняться только в Windows Vista и более поздних версий, должно использовать CompareStringEx.
 

Синтаксис

int CompareStringA(
  [in] LCID   Locale,
  [in] DWORD  dwCmpFlags,
  [in] PCNZCH lpString1,
  [in] int    cchCount1,
  [in] PCNZCH lpString2,
  [in] int    cchCount2
);

Параметры

[in] Locale

Идентификатор языкового стандарта, используемого для сравнения. Вы можете использовать макрос MAKELCID для создания идентификатора языкового стандарта или использовать одно из следующих предопределенных значений.

[in] dwCmpFlags

Флаги, указывающие, как функция сравнивает две строки. Подробные определения см. в параметре dwCmpFlagsобъекта CompareStringEx.

[in] lpString1

Указатель на первую сравниваемую строку.

[in] cchCount1

Длина строки, указанной lpString1, за исключением завершающего символа NULL. Это значение представляет байты для версии ANSI функции и расширенные символы для версии Юникода. Приложение может предоставить отрицательное значение, если строка заканчивается null. В этом случае функция автоматически определяет длину.

[in] lpString2

Указатель на вторую строку для сравнения.

[in] cchCount2

Длина строки, указанной lpString2, за исключением завершающего символа NULL. Это значение представляет байты для версии ANSI функции и расширенные символы для версии Юникода. Приложение может предоставить отрицательное значение, если строка заканчивается null. В этом случае функция автоматически определяет длину.

Возвращаемое значение

Возвращает значения, описанные для CompareStringEx.

Комментарии

См. примечания для CompareStringEx.

Если приложение вызывает версию ANSI CompareString, функция преобразует параметры с помощью кодовой страницы по умолчанию указанного языкового стандарта. Таким образом, приложение никогда не может использовать CompareString для обработки текста UTF-8.

Как правило, для сравнений без учета регистра CompareString сопоставляет строчные буквы "i" с прописными буквами "I", даже если языковой стандарт является турецким или азербайджанским. Флаг NORM_LINGUISTIC_CASING переопределяет это поведение для турецкого или азербайджанского языка. Если этот флаг указан в сочетании с турецким или азербайджанским, ТО ЛАТИНСКАЯ МАЛЕНЬКАЯ БУКВА DOTLESS I (U+0131) — это строчная форма ПРОПИСНОЙ БУКВЫ I (U+0049), а ЛАТИНСКАЯ МАЛЕНЬКАЯ БУКВА I (U+0069) — строчная форма ЛАТИНСКОЙ ПРОПИСНОЙ БУКВЫ I WITH DOT ABOVE (U+0130).

Начиная с Windows 8: Версия ANSI функции объявлена в Winnls.h, а версия Юникода — в Stringapiset.h. До Windows 8 обе версии объявлялись в Winnls.h.

Примечание

Заголовок winnls.h определяет CompareString как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winnls.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

CompareStringEx

Обработка сортировки в приложениях

Поддержка национальных языков

Функции поддержки национальных языков

Вопросы безопасности: международные функции

Использование нормализации Юникода для представления строк