Функция GetStringTypeW (stringapiset.h)
Заметка
Этот API может содержать неполные или устаревшие сведения для определенных символов Юникода, особенно в дополнительном диапазоне. Для получения более точных и комплексных сведений о типе символов Юникода рекомендуется использовать эквивалентные API ICU, такие как u_charType, u_islower, u_isspaceи u_ispunct. Рекомендации по использованию API ICU в Windows см. в статье Начало работы с ICU в Windows.
Извлекает сведения о типе символов для символов в указанной исходной строке Юникода. Для каждого символа в строке функция задает один или несколько битов в соответствующем 16-разрядном элементе выходного массива. Каждый бит определяет заданный тип символа, например буквы, цифры или ни одного из них.
Синтаксис
BOOL GetStringTypeW(
[in] DWORD dwInfoType,
[in] _In_NLS_string_(cchSrc)LPCWCH lpSrcStr,
[in] int cchSrc,
[out] LPWORD lpCharType
);
Параметры
[in] dwInfoType
Флаги, указывающие сведения о типе символа для получения. Этот параметр может иметь следующие значения. Типы символов делятся на разные уровни, как описано в разделе "Примечания".
Флаг | Значение |
---|---|
|
Получение сведений о типе символа. |
|
Получение двунаправленных сведений о макете. |
|
Получение сведений об обработке текста. |
[in] lpSrcStr
Указатель на строку Юникода, для которой необходимо получить типы символов. Предполагается, что строка завершается null, если cchSrc имеет любое отрицательное значение.
[in] cchSrc
Размер в символах строки, указанной lpSrcStr. Если размер содержит завершающий символ 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.
Параметр языкового стандарта
поддерживаемые типы символов
Биты типа символов делятся на несколько уровней. Сведения для одного уровня можно получить одним вызовом этой функции. Каждый уровень ограничен 16 битами информации, чтобы другие функции сопоставления, которые ограничены 16 битами представления на символ, также могут возвращать сведения о типе символов.
Ctype 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. Битовое значение ИЛИ этих значений извлекается при CT_CTYPE3 dwInfoType. Для языковых стандартов DBCS атрибуты Ctype 3 применяются как к узким символам, так и к широким символам. Японские символы хираганы и катаканы, а также символы кандзи идеографа имеют атрибут C3_ALPHA.
Имя | Ценность | Значение |
---|---|---|
C3_NONSPACING | 0x0001 | Неспециационная отметка |
C3_DIACRITIC | 0x0002 | Diacritic nonspacing mark |
C3_VOWELMARK | 0x0004 | Знак неспециационной гласной |
C3_SYMBOL | 0x0008 | Символ |
C3_KATAKANA | 0x0010 | Символ Katakana |
C3_HIRAGANA | 0x0020 | Символ Хираганы |
C3_HALFWIDTH | 0x0040 | Полуширинный символ (узкий) |
C3_FULLWIDTH | 0x0080 | Символ полной ширины (широкий) |
C3_IDEOGRAPH | 0x0100 | Идеографический символ |
C3_KASHIDA | 0x0200 | Арабский символ Кашида |
C3_LEXICAL | 0x0400 | Знак препинания, который считается частью слова (kashida, дефис, женский или мужский порядковый индикатор, знак равенства и т. д.) |
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] |
целевая платформа | Виндоус |
заголовка | stringapiset.h (include Windows.h) |
библиотеки |
Kernel32.lib |
DLL | Kernel32.dll |
См. также
поддержки национальных языков