Функция GetStringTypeW (stringapiset.h)
Извлекает сведения о типах символов для символов в указанной исходной строке Юникода. Для каждого символа в строке функция задает один или несколько битов в соответствующем 16-разрядном элементе выходного массива. Каждый бит идентифицирует заданный тип символа, например букву, цифру или ни то, ни другой.
Синтаксис
BOOL GetStringTypeW(
[in] DWORD dwInfoType,
[in] _In_NLS_string_(cchSrc)LPCWCH lpSrcStr,
[in] int cchSrc,
[out] LPWORD lpCharType
);
Параметры
[in] dwInfoType
Флаги, указывающие извлекаемую информацию о типе символов. Этот параметр может иметь следующие значения. Типы символов делятся на разные уровни, как описано в разделе Примечания.
Flag | Значение |
---|---|
|
Получение сведений о типе символов. |
|
Получение сведений о двунаправленном макете. |
|
Получение информации об обработке текста. |
[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 |