Поделиться через


Функция 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

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

[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 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка winnls.h (включая Windows.h)
библиотеки Kernel32.lib
DLL Kernel32.dll

См. также

CompareStringEx

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

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

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

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

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