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


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

Заметка

Этот API может содержать неполные или устаревшие сведения для определенных символов Юникода, особенно в дополнительном диапазоне. Для получения более точных и комплексных сведений о типе символов Юникода рекомендуется использовать эквивалентные API ICU, такие как u_charType, u_islower, u_isspaceи u_ispunct. Рекомендации по использованию API ICU в Windows см. в статье Начало работы с ICU в Windows.

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

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

 

Синтаксис

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

Параметры

[in] dwInfoType

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

Флаг Значение
CT_CTYPE1
Получение сведений о типе символа.
CT_CTYPE2
Получение двунаправленных сведений о макете.
CT_CTYPE3
Получение сведений об обработке текста.

[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.

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

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

Биты типа символов делятся на несколько уровней. Сведения для одного уровня можно получить одним вызовом этой функции. Каждый уровень ограничен 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

См. также

GetStringTypeA

GetStringTypeEx

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

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