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


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

Не рекомендуется. Извлекает сведения о типах символов для символов в указанной исходной строке. Для каждого символа в строке функция задает один или несколько битов в соответствующем 16-разрядном элементе выходного массива. Каждый бит идентифицирует заданный тип символа, например букву, цифру или ни то, ни другой.

Осторожностью Неправильное использование функции GetStringTypeA может поставить под угрозу безопасность приложения. Чтобы избежать переполнения буфера, приложение должно правильно задать размер выходного буфера. Дополнительные сведения о безопасности см. в разделе Вопросы безопасности: пользовательский интерфейс Windows.

 

Синтаксис

BOOL GetStringTypeA(
  [in]  LCID   Locale,
  [in]  DWORD  dwInfoType,
  [in]  LPCSTR lpSrcStr,
  [in]  int    cchSrc,
  [out] LPWORD lpCharType
);

Параметры

[in] Locale

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

Windows Vista и более поздних версий: Также поддерживаются следующие пользовательские идентификаторы языкового стандарта.

[in] dwInfoType

Флаги, указывающие извлекаемую информацию о типе символов. Возможные значения флагов см. в параметре dwInfoTypeобъекта GetStringTypeW. Подробные сведения о битах символьного типа см. в разделе Примечания для GetStringTypeW.

[in] lpSrcStr

Указатель на строку ANSI, для которой извлекаются типы символов. Строка может быть двухбайтовой кодировкой (DBCS), если предоставленный языковой стандарт подходит для DBCS. Предполагается, что строка заканчивается нулевым значением, если для cchSrc задано какое-либо отрицательное значение.

[in] cchSrc

Размер (в символах) строки, указанной lpSrcStr. Если размер включает завершающий символ NULL, функция получает сведения о типе символа для этого символа. Если приложение задает для размера любое отрицательное целое число, предполагается, что исходная строка заканчивается null и функция автоматически вычисляет размер с дополнительным символом для завершения null.

[out] lpCharType

Указатель на массив 16-разрядных значений. Длина этого массива должна быть достаточно большой, чтобы получить одно 16-битовое значение для каждого символа в исходной строке. Если cchSrc не является отрицательным числом, lpCharType должен быть массивом слов с элементами cchSrc . Если для cchSrc задано отрицательное число, lpCharType — это массив слов с элементами lpSrcStr + 1. При возврате функции этот массив содержит одно слово, соответствующее каждому символу в исходной строке.

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

Возвращает ненулевое значение в случае успешного выполнения или значение 0 в противном случае. Чтобы получить расширенные сведения об ошибке, приложение может вызвать Метод GetLastError, который может возвращать один из следующих кодов ошибок:

  • ERROR_INVALID_FLAGS. Значения, предоставленные для флагов, были недопустимыми.
  • ERROR_INVALID_PARAMETER. Любое из значений параметров было недопустимым.

Комментарии

Общие сведения об использовании строковых функций см. в разделе Строки.

Эта функция преобразует исходную строку в Юникод и вызывает соответствующую функцию GetStringTypeW . Таким образом, слова в выходном буфере соответствуют не исходной строке ANSI, а ее эквиваленту в Юникоде. Преобразование из ANSI в Юникод может привести к изменению длины строки, например, пара символов ANSI может сопоставляться с одним символом Юникода. Поэтому соответствие между словами в выходном буфере и символами в исходной строке ANSI не является "один к одному" во всех случаях, например в многобайтовых строках. Таким образом , GetStringTypeA используется ограниченно для строк с несколькими символами. Вместо этого рекомендуется использовать функцию GetStringTypeW и GetStringTypeEx.

Если эта функция используется с идентификатором языкового стандарта только в Юникоде, функция может быть успешной, так как операционная система использует системную кодовую страницу. Однако символы, которые не определены на системной кодовой странице, отображаются в строке как вопросительный знак (?).

Значения параметров lpSrcStr и lpCharType не должны совпадать. Если они совпадают, функция завершается сбоем с ERROR_INVALID_PARAMETER.

Параметр Locale используется только для преобразования строк в Юникод. Он не имеет ничего общего со значениями CTYPE*, предоставленными приложением. Эти значения определяются исключительно кодовых точками Юникода и не зависят от языкового стандарта. Например, греческие буквы указываются как C1_ALPHA для любого значения locale.

Параметр Locale не используется соответствующей функцией GetStringTypeW . Из-за разницы параметров приложение не может автоматически вызывать правильную версию ANSI или Юникод функции GetStringType* , используя параметр #DEFINE ЮНИКОД. Приложение может обойти это ограничение с помощью рекомендуемой функции GetStringTypeEx.

Требования

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

См. также

GetStringTypeEx

GetStringTypeW

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

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