Функция GetStringTypeA извлекает информацию о типах символов для символов в указанной исходной строке. Для каждого символа в строке функция устанавливает один или несколько битов в соответствующем 16-разрядном элементе массива вывода данных. Каждый бит идентифицирует данные типа символов, такие как, является ли символ буквой, цифрой, или ни тем, ни другим.
BOOL GetStringTypeA( LCID Locale, DWORD dwInfoType, LPCSTR lpSrcStr, int cchSrc, LPWORD lpCharType ); |
[in] Указывает идентификатор территории. Это значение уникально определяет кодовую страницу ANSI, которая используется, чтобы преобразовать строку, указанную при помощи параметра lpSrcStr, из ANSI в Unicode. Функция затем анализирует каждый символ Unicode для информации о типе символа.
Этот параметр может быть идентификатор территории, созданный макрокомандой MAKELCID, или одним из нижеследующих предопределенных значений.
Обратите внимание! на то, что параметр Locale не существует в функции GetStringTypeW. Из-за этого параметрического различия приложение не может автоматически вызвать правильную A или W версию функции GetStringType* с помощью использования переключателя UNICODE #define. Приложение может обойти это ограничение при помощи использования функции GetStringTypeEx, которая является рекомендованной функцией. |
Значение |
Предназначение |
LOCALE_SYSTEM_DEFAULT | Системный язык по умолчанию |
LOCALE_USER_DEFAULT | Язык страны гипотетического пользователя |
dwInfoType
[in] Определяет информацию о типе символа, которую пользователь хочет извлечь. Различные типы делятся на различные уровни (см. нижеследующий раздел статьи Замечаний о списке данных, включающих в себя в каждый тип). Этот параметр может указать один из нижеследующих флажков типов символов.
Флажок |
Предназначение |
CT_CTYPE1 | Извлекает информацию о типе символа. |
CT_CTYPE2 | Извлекает двунаправленную информацию разметки. |
CT_CTYPE3 | Извлекает информацию обработки текста. |
lpSrcStr
[in] Указатель на строку, для которой запрашивались типы символов. Если параметр cchSrc - любое отрицательное целое число, то строка не предполагает быть завершенной NULL - терминатором. Она должна быть строкой ANSI.
Обратите внимание! на то, что это может быть строка набора двухбайтовых символов, если язык страны соответствует набору двухбайтовых символов. |
[in] Определяет размер строки, указанный при помощи параметра lpSrcStr, в символах. Если этот рассчет включает символ завершающего нуля, то функция возвращает информацию о типе символа за символом завершающего нуля. Если параметр cchSrc - любое отрицательное целое число, то предполагается, что строка завершается NULL, а длина вычисляется автоматически с дополнительным символом завершения NULL. Таким образом, в этом случае, длина - _tcslen (lpSrcStr) + 1.
lpCharType[out] Указатель на массив 16-битовых значений. Длина этого массива должна быть достаточно большой, чтобы принять по одному 16-битовому значению для каждого символа в исходной строке. Если параметр cchSrc - не отрицательное число, то параметр lpCharType должен быть массивом типа WORD (СЛОВО) с количеством cchSrc элементов. Если параметр cchSrc - отрицательное число, то параметр lpCharType должен быть массивом типа WORD (СЛОВО) с количеством (_tcslen(lpSrcStr) + 1) элементов. Когда функция возвращает значение, то этот массив содержит одно слово соответствующее каждому символу в исходной строке.
Если функция завершается ошибкой, возвращаемое значение - нуль. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError. GetLastError может возвратить один из нижеследующих кодов ошибки:
ERROR_INVALID_FLAGS
ERROR_INVALID_PARAMETER
Предупреждение защиты Используя функцию GetStringTypeA неправильно вы может поставить под угрозу обеспечение безопасности Вашего приложения. Чтобы избежать переполнения буфера, установите размер буфера в параметре lpCharType правильно. Дополнительную информацию о защите данных, см. в статье Рассмотрения вопроса обеспечения безопасности: Пользовательский интерфейс Windows. |
Обратите внимание! на то, что когда версия ANSI этой функции используется с LCID только для Unicode, вызов может завершиться успешно, потому что система использует системную кодовую страницу. Однако, символы, которые не определяются в системной кодовой странице, показываются в строке как вопросительный знак (?). Чтобы определить, какие LCID только для Unicode, см. Таблицу идентификаторов языка. |
Указатели lpSrcStr и lpCharType не должны быть одинаковыми. Если они - одинаковые, функция завершается ошибкой, а GetLastError возвращает значение ERROR_INVALID_PARAMETER.
Параметр Locale используется только для того, чтобы выполнить преобразование строк в Unicode. Он не имеет никакого отношения к CTYPEs, которое возвращает функция. CTYPEs определяются исключительно точками кодирования Unicode и не изменяются на основе языка страны. Например, буквы греческого языка - C1_ALPHA для любого значения параметра Locale.
Биты типов символов делятся на несколько уровней. Информация для одного уровня, может быть найдена отдельным вызовом этой функции. Каждый уровень ограничивается 16 битами информации так, чтобы другие процедуры отображения, которые ограничиваются 16 битами представления на символ, могли также возвратить данные о типах символов.
Поддерживаемые типы символов этой функцией, включены ниже.
Ctype 1
Эти типы поддерживают функции ANSI C и переносимого интерфейса операционной системы на основе Unix -POSIX (LC_CTYPE), вводящие текст. Побитовая операция OR этих значений возвращается в массиве, указанном при помощи параметра lpCharType тогда, когда параметр dwInfoType устанавливается в CT_CTYPE1. Для языков с набором двухбайтовых символов (DBCS), атрибут Ctype 1 применяется и к "узким" символам, и к "широким" символам. Символы Hiragana и Katakana японского языка и идеограммы кандзи - все имеют атрибут 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
Эти типы поддерживают правильную разметку текста Unicode. Для языков c двухбайтовыми символами (DBCS) Ctype 2 применяется и к "узким", и "широким" символам. Атрибуты направления назначены так, чтобы двунаправленный алгоритм компоновки, стандартизированный Unicode, привел к точным результатам. Эти типы являются взаимоисключающими. Для получения дополнительной информации об использование этих атрибутов, см. статью Стандарт Unicode: Международная Символьная кодировка, Тома 1 и 2, Addison Издательство Уэсли: 1991, 1992, ISBN 0201567881.
Имя |
Значение |
Предназначение |
---|---|---|
Strong (Сильные) | ||
C2_LEFTTORIGHT | 0x0001 | Слева направо |
C2_RIGHTTOLEFT | 0x0002 | Справа налево |
Weak(Слабые) | ||
C2_EUROPENUMBER | 0x0003 | Европейское число, европейская цифра |
C2_EUROPESEPARATOR | 0x0004 | Европейский числовой разделитель |
C2_EUROPETERMINATOR | 0x0005 | Европейский числовой терминатор |
C2_ARABICNUMBER | 0x0006 | Арабское число |
C2_COMMONSEPARATOR | 0x0007 | Обычный числовой разделитель |
Neutral (Нейтральные) | ||
C2_BLOCKSEPARATOR | 0x0008 | Разделитель блока |
C2_SEGMENTSEPARATOR | 0x0009 | Разделитель сегмента |
C2_WHITESPACE | 0x000A | Пробел |
C2_OTHERNEUTRAL | 0x000B | Другие нейтральные символы |
Not applicable (Не применяемые) | ||
C2_NOTAPPLICABLE | 0x0000 | Не подразумевается какая-либо направленность (например, управляющие коды) |
Ctype 3
Эти типы предназначаются, чтобы быть именами - заместителями для расширений типов POSIX, требуемым для основной обработки текста или для стандартных библиотечных функций C. Побитовая операция OR этих значений возвращается тогда, когда параметр dwInfoType устанавливается в CT_CTYPE3. Для языков с двухбайтовыми символами (DBCS) атрибут Ctype 3 применяются и к "узким" символам, и к "широким" символам. Символы Hiragana и Katakana японского языка и идеограммы кандзи - все имеют атрибут C3_ALPHA.
Имя |
Значение |
Предназначение |
---|---|---|
C3_NONSPACING | 0x0001 | Несамостоятельный знак. |
C3_DIACRITIC | 0x0002 | Диакритический несамостоятельный знак. |
C3_VOWELMARK | 0x0004 | Несамостоятельный знак гласного. |
C3_SYMBOL | 0x0008 | Символ. |
C3_KATAKANA | 0x0010 | Символ Katakana. |
C3_HIRAGANA | 0x0020 | Символ Hiragana. |
C3_HALFWIDTH | 0x0040 | Полуширинный (узкий) символ. |
C3_FULLWIDTH | 0x0080 | Полноширинный (широкий) символ. |
C3_IDEOGRAPH | 0x0100 | Идеографический символ. |
C3_KASHIDA | 0x0200 | Символ арабской кашиды. |
C3_LEXICAL | 0x0400 | Пунктуация, которая считается как часть слова (Kashida, дефис, женские/мужские порядковые индикаторы, знак равенства, и т. д.). |
C3_ALPHA | 0x8000 | Все лингвистические символы (алфавитные, слоговая азбука, и идеограммы). |
Not applicable (Не применяемые) | ||
C3_NOTAPPLICABLE | 0x0000 | Не применяется. |
Обзор Строки, Функции, используемые строками, GetLocaleInfo, GetStringTypeEx, GetStringTypeW
Размещение и совместимость GetStringTypeA |
||
К | Windows XP | Да |
л | Windows 2000 Professional | Да |
и | Windows NT Workstation | Да версии 3.1 |
е | Windows Me | Да |
н | Windows 98 | Да |
т | Windows 95 | Да |
С | Windows Server 2003 | Да |
е | Windows 2000 Server | Да |
р | Windows NT Server | Да версии 3.1 |
в | ||
е | ||
р | ||
Используемая библиотека | Kernel32.lib | |
Используемая DLL | kernel32.dll | |
Заголовочный файл | ||
- объявлено в | Winnls.h | |
- включено в | Windows.h | |
Unicode | Реализуются как версии Unicode и ANSI. | |
Замечания по платформе | Не имеется |