Функция GetStringTypeExW (stringapiset.h)
Заметка
Этот API может содержать неполные или устаревшие сведения для определенных символов Юникода, особенно в дополнительном диапазоне. Для получения более точных и комплексных сведений о типе символов Юникода рекомендуется использовать эквивалентные API ICU, такие как u_charType, u_islower, u_isspaceи u_ispunct. Рекомендации по использованию API ICU в Windows см. в статье Начало работы с ICU в Windows.
Извлекает сведения о типе символов для символов в указанной исходной строке. Для каждого символа в строке функция задает один или несколько битов в соответствующем 16-разрядном элементе выходного массива. Каждый бит определяет заданный тип символа, например буквы, цифры или ни одного из них.
Синтаксис
BOOL GetStringTypeExW(
[in] LCID Locale,
[in] DWORD dwInfoType,
[in] _In_NLS_string_(cchSrc)LPCWCH lpSrcStr,
[in] int cchSrc,
[out] LPWORD lpCharType
);
Параметры
[in] Locale
идентификатор языкового стандарта, указывающий языковой стандарт. Это значение однозначно определяет кодовую страницу ANSI. Вы можете использовать макрос
[in] dwInfoType
Флаги, указывающие сведения о типе символа для получения. Возможные значения флагов см. в параметре dwInfoType
[in] lpSrcStr
Указатель на строку, для которой извлекаются типы символов. Предполагается, что строка завершается null, если cchSrc имеет любое отрицательное значение.
[in] cchSrc
Размер в символах строки, указанной lpSrcStr. Размер относится к байтам для версии ANSI функции или расширенных символов для версии Юникода. Если размер содержит завершающий символ NULL, функция извлекает сведения о типе символа для этого символа. Если приложение задает размер любому отрицательному целочислению, исходная строка считается пустой и функция вычисляет размер автоматически с дополнительным символом для завершения null.
[out] lpCharType
Указатель на массив 16-разрядных значений. Длина этого массива должна быть достаточно большой, чтобы получить одно 16-разрядное значение для каждого символа в исходной строке. Если cchSrc не является отрицательным числом, lpCharType должен быть массивом слов с элементами cchSrc. Если cchSrc задано отрицательное число, lpCharType представляет собой массив слов с элементами lpSrcStr + 1. Когда функция возвращается, этот массив содержит одно слово, соответствующее каждому символу в исходной строке.
Возвращаемое значение
Возвращает ненулевое значение в случае успешного выполнения или 0 в противном случае. Чтобы получить расширенные сведения об ошибке, приложение может вызывать GetLastError, что может возвращать один из следующих кодов ошибок:
- ERROR_INVALID_FLAGS. Значения, предоставленные для флагов, недопустимы.
- ERROR_INVALID_PARAMETER. Любое из значений параметров было недопустимым.
Замечания
Общие сведения об использовании строковых функций см. в строках.
Используя кодовую страницу ANSI для предоставленного языкового стандарта, эта функция преобразует исходную строку из ANSI в Юникод. Затем он анализирует каждый символ Юникода для сведений о типе символов.
Версия ANSI этой функции преобразует исходную строку в Юникод и вызывает соответствующую функцию GetStringTypeW. Таким образом, слова в выходном буфере соответствуют не исходной строке ANSI, но его эквиваленту Юникода. Преобразование из ANSI в Юникод может привести к изменению длины строки, например пары символов ANSI, которые могут сопоставляться с одним символом Юникода. Поэтому соответствие между словами в выходном буфере и символами в исходной строке ANSI не является одно к одному во всех случаях, например многобайтовыми строками. Таким образом, версия ANSI этой функции имеет ограниченное использование для строк с несколькими символами. Вместо этого рекомендуется использовать версию функции Юникода.
Эта функция обходит ограничение, вызванное различием параметров между GetStringTypeA и GetStringTypeW. Из-за различия параметров приложение не может автоматически вызывать соответствующую версию ANSI или Юникод функции GetStringType* с помощью #define коммутатора ЮНИКОДа. С другой стороны, GetStringTypeEx, правильно ведет себя в отношении этого коммутатора. Таким образом, рекомендуется использовать функцию.
Если версия этой функции ANSI используется с идентификатором языкового стандарта юникода, функция может завершиться успешно, так как операционная система использует системную кодовую страницу. Однако символы, которые не определены в системной кодовой странице, отображаются в строке как вопросительный знак (?).
Значения lpSrcStr и lpCharType не должны совпадать. Если они одинаковы, функция завершается ошибкой с ERROR_INVALID_PARAMETER.
Параметр языкового стандарта используется только для выполнения преобразования строк в Юникод. Он не имеет ничего общего с значениями CTYPE*, предоставленными приложением. Эти значения определяются исключительно точками кода Юникода и не зависят от языкового стандарта. Например, греческие буквы указываются как C1_ALPHA для любого значения языкового стандарта.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 2000 Профессиональный [классические приложения | Приложения UWP] |
минимальный поддерживаемый сервер | Windows 2000 Server [классические приложения | Приложения UWP] |
целевая платформа | Виндоус |
заголовка | stringapiset.h (include Windows.h) |
библиотеки |
Kernel32.lib |
DLL | Kernel32.dll |
См. также
поддержки национальных языков