Функция GetStringTypeW (stringapiset.h)

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

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

 

Синтаксис

BOOL GetStringTypeW(
  [in]  DWORD                         dwInfoType,
  [in]  _In_NLS_string_(cchSrc)LPCWCH lpSrcStr,
  [in]  int                           cchSrc,
  [out] LPWORD                        lpCharType
);

Параметры

[in] dwInfoType

Флаги, указывающие извлекаемую информацию о типе символов. Этот параметр может иметь следующие значения. Типы символов делятся на разные уровни, как описано в разделе Примечания.

Flag Значение
CT_CTYPE1
Получение сведений о типе символов.
CT_CTYPE2
Получение сведений о двунаправленном макете.
CT_CTYPE3
Получение информации об обработке текста.

[in] lpSrcStr

Указатель на строку Юникода, для которой извлекаются типы символов. Предполагается, что строка заканчивается нулевым значением, если для 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. Любое из значений параметров было недопустимым.

Комментарии

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

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

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

Поддерживаемые типы символов

Биты символьного типа делятся на несколько уровней. Сведения для одного уровня могут быть получены одним вызовом этой функции. Каждый уровень ограничен 16 битами информации, поэтому другие функции сопоставления, которые ограничены 16 битами представления на символ, также могут возвращать сведения о типе символов.

Тип C 1

Эти типы поддерживают функции ввода символов ANSI C и POSIX (LC_CTYPE). Битовая или из этих значений извлекается в массиве в выходном буфере, если параметру dwInfoType присвоено значение CT_CTYPE1. Для языковых стандартов DBCS атрибуты типа применяются как к узким, так и к расширенным символам. Символы японской хираганы и катаканы, а также символы иеографа кандзи имеют атрибут C1_ALPHA.

Имя Значение Значение
C1_UPPER 0x0001 Прописные буквы
C1_LOWER 0x0002 Строчные буквы
C1_DIGIT 0x0004 Десятичные цифры
C1_SPACE 0x0008 Символы пробела
C1_PUNCT 0x0010 Пунктуация
C1_CNTRL 0x0020 управляющие символы;
C1_BLANK 0x0040 Пустые символы
C1_XDIGIT 0x0080 Шестнадцатеричные цифры
C1_ALPHA 0x0100 Любой лингвистический символ: алфавитный, слоговый или идеографический
C1_DEFINED 0x0200 Определенный символ, но не один из других типов C1_*
 

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

Тип Описание
Буквенно-цифровой Алфавитные символы и цифры (C1_ALPHA и C1_DIGIT)
Печатные символы Графические символы и пробелы (все типы C1_*, кроме C1_CNTRL)
 

Тип Ctype 2

Эти типы поддерживают правильную разметку текста Юникода. Для языковых стандартов DBCS тип символа применяется как к узким, так и к расширенным символам. Атрибуты направления назначаются таким образом, чтобы алгоритм двунаправленного макета, стандартизированный в Юникоде, предоставлял точные результаты. Эти типы являются взаимоисключающими. Дополнительные сведения об использовании этих атрибутов см. в разделе Стандарт Юникода.

Имя Значение Значение
Уровень согласованности "Строгая"
C2_LEFTTORIGHT 0x0001 Слева направо
C2_RIGHTTOLEFT 0x0002 Справа налево
Слабая
C2_EUROPENUMBER 0x0003 Европейский номер, европейская цифра
C2_EUROPESEPARATOR 0x0004 Европейский числовой разделитель
C2_EUROPETERMINATOR 0x0005 Европейский числовой признак конца
C2_ARABICNUMBER 0x0006 Арабский номер
C2_COMMONSEPARATOR 0x0007 Общий числовой разделитель
нейтральное выражение.
C2_BLOCKSEPARATOR 0x0008 Разделитель блоков
C2_SEGMENTSEPARATOR 0x0009 Разделитель сегментов
C2_WHITESPACE 0x000A Пробел
C2_OTHERNEUTRAL 0x000B Другие нейтральные
Неприменимо
C2_NOTAPPLICABLE 0x0000 Отсутствие неявной направленности (например, коды элементов управления)
 

Ctype 3

Эти типы предназначены для заполнителей для расширений типов POSIX, необходимых для общей обработки текста или для стандартных функций библиотеки C. Побитовое ИЛИ этих значений извлекается, если параметру dwInfoType присвоено значение CT_CTYPE3. Для языковых стандартов DBCS атрибуты Ctype 3 применяются как к узким, так и к расширенным символам. Японские символы хираганы и катаканы, а также символы иеографа кандзи имеют атрибут C3_ALPHA.

Имя Значение Значение
C3_NONSPACING 0x0001 Нераспакованная метка
C3_DIACRITIC 0x0002 Диакритическая метка
C3_VOWELMARK 0x0004 Знак без гласного
C3_SYMBOL 0x0008 Символ
C3_KATAKANA 0x0010 Символ Катакана
C3_HIRAGANA 0x0020 Символ хираганы
C3_HALFWIDTH 0x0040 Полуширинный (узкий) символ
C3_FULLWIDTH 0x0080 Символ полной ширины (широкий)
C3_IDEOGRAPH 0x0100 Идеографический символ
C3_KASHIDA 0x0200 Арабский символ кашиды
C3_LEXICAL 0x0400 Знак препинания, который считается частью слова (кашида, дефис, женственные/мужские порядковые показатели, знак равенства и т. д.)
C3_ALPHA 0x8000 Все лингвистические символы (алфавитный, слоговый и идеографический)
C3_HIGHSURROGATE 0x0800 Windows Vista: Единица кода с высоким уровнем суррогата
C3_LOWSURROGATE 0x1000 Windows Vista: Единица кода с низким уровнем суррогата
Неприменимо
C3_NOTAPPLICABLE 0x0000 Неприменимо
 

C3_HIGHSURROGATE и C3_LOWSURROGATE перечислены только для полноты и никогда не должны предоставляться этой функции. Они актуальны только для Юникода.

Начиная с Windows 8: GetStringTypeW объявляется в Stringapiset.h. До Windows 8 он был объявлен в Winnls.h.

Требования

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

См. также

GetStringTypeA

GetStringTypeEx

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

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