GetStringTypeEx函数返回指定源字符串中字符的字符类型信息。对于字符串中的每个字符,该函数设置输出数组的相应16位元素中的一个或多个位。每个位都标识给定的字符类型,例如字符是字母,数字还是两者。
与其近亲GetStringTypeA和GetStringTypeW不同,GetStringTypeEx通过使用#define UNICODE交换机展示了合适的A或W行为。这是推荐的Win32功能。
BOOL GetStringTypeEx(
LCID 【语言环境】, | // locale identifer |
DWORD 【dwInfoType】, | //信息类型选项 |
LPCTSTR 【lpSrcStr】, | //源字符串的地址 |
INT 【cchSrc】, | //源字符串的大小(字节或字符) |
LPWORD 【lpCharType】 | //输出缓冲区地址 |
); |
参数
【语言环境】
指定区域设置标识符。此值唯一地定义用于将由【lpSrcStr】指向的字符串从ANSI转换为Unicode的ANSI代码页。该函数然后分析每个Unicode字符的字符类型信息。请注意,此函数的W版本忽略此参数。
此参数可以是由MAKELCID宏或以下预定义值之一创建的区域设置标识符:
LOCALE_SYSTEM_DEFAULT | 默认系统区域设置 |
LOCALE_USER_DEFAULT | 默认用户区域设置 |
【dwInfoType】
指定用户想要检索的字符信息的类型。各种类型分为不同的级别(有关每种类型中包含的信息的列表,请参阅以下备注部分)。此参数可以指定以下字符类型标志之一:
CT_CTYPE1 | 检索字符类型信息。 |
CT_CTYPE2 | 检索双向布局信息。 |
CT_CTYPE3 | 检索文本处理信息。 |
【lpSrcStr】
指向要求哪个字符类型的字符串。如果【cchSrc】为-1,则假定字符串为空终止。这必须是此函数的W版本的Unicode字符串,以及A版本的ANSI字符串。请注意,对于A版本,如果语言环境适用于DBCS,则可以是双字节字符集(DBCS)字符串。
【cchSrc】
指定【lpSrcStr】参数指向的字符串的大小(以字节为单位(ANSI版本)或字符(Unicode版本))。如果此计数包含一个空终止符,该函数返回空终止符的字符类型信息。如果此值为-1,则假定字符串为空终止,并自动计算长度。
【lpCharType】
指向一组16位值。该数组的长度必须足够大,以便为源字符串中的每个字符接收一个16位值。当函数返回时,该数组包含与源字符串中每个字符相对应的一个字。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.GetLastError可能会返回以下错误代码之一:
ERROR_INVALID_FLAGS
ERROR_INVALID_PARAMETER
备注
GetStringTypeEx功能存在以避免由GetStringTypeA和GetStringTypeW的参数差异引起的限制。该参数差异阻止应用程序通过使用#define UNICODE开关自动调用W或W版本的W.另一方面,GetStringTypeEx对于该交换机的行为正常。因此,这是推荐的Win32功能。
【语言环境】参数仅用于执行字符串转换为Unicode。它与函数返回的CTYPE无关。CTYPE仅由Unicode代码点确定,并且不会因地区而异。例如,任何【语言环境】值的希腊字母都是C1_ALPHA。
【lpSrcStr】和【lpCharType】指针不能相同。如果它们相同,则该函数失败,GetLastError返回ERROR_INVALID_PARAMETER。
字符型位分为几个级别。一个级别的信息可以通过单次调用该函数来检索。每个级别限制为16位信息,因此限制为每个字符的16位表示的其他映射例程也可以返回字符类型信息。
此函数支持的字符类型包括以下内容。
C型1
这些类型支持ANSI C和POSIX(LC_CTYPE)字符输入功能。当【dwInfoType】参数设置为CT_CTYPE1时,这些值的组合将返回到【lpCharType】参数指向的数组中。
名称 | 值 | 含义 |
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_ALPHA和C1_DIGIT) |
可打印 | 图形字符和空白(除C1_CNTRL之外的所有C1_ *类型) |
Ctype 2
这些类型支持Unicode文本的正确布局。方向属性被分配,使得由Unicode标准化的双向布局算法产生准确的结果。这些类型是互斥的。有关使用这些属性的更多信息,请参阅【Unicode标准:全球字符编码,第1卷和第2卷,】 Addison Wesley Publishing Company:1991,1992,ISBN 0201567881。
名称 | 值 | 含义 |
强大: | ||
C2_LEFTTORIGHT | 0x1 | 左到右 |
C2_RIGHTTOLEFT | 0x2 | 右到左 |
弱: | ||
C2_EUROPENUMBER | 0x3 | 欧洲数字,欧洲数字 |
C2_EUROPESEPARATOR | 0x4 | 欧式数字分隔符 |
C2_EUROPETERMINATOR | 0x5 | 欧洲数字终结器 |
C2_ARABICNUMBER | 0x6 | 阿拉伯数字 |
C2_COMMONSEPARATOR | 0x7 | 常用数字分隔符 |
中性: | ||
C2_BLOCKSEPARATOR | 0x8 | 块分隔符 |
C2_SEGMENTSEPARATOR | 0x9 | 段分隔符 |
C2_WHITESPACE | 0xA | 白色空间 |
C2_OTHERNEUTRAL | 0xB | 其他中立者 |
不适用: | ||
C2_NOTAPPLICABLE | 0x0 | 没有隐含的方向性(例如,控制代码) |
C型3
这些类型旨在作为一般文本处理或标准C库函数所需的POSIX类型扩展的占位符。这些类型在当前版本的Windows NT中受支持。当【dwInfoType】设置为CT_CTYPE3时,返回这些值的组合。
名称 | 值 | 含义 |
C3_NONSPACING | 0x1 | 无标记 |
C3_DIACRITIC | 0x2 | 符号不规则的标记 |
C3_VOWELMARK | 0x4 | 元音无指标 |
C3_SYMBOL | 0x8 | 符号 |
C3_KATAKANA | 0x10 | 片假名人物 |
C3_HIRAGANA | 0x20 | 平假名字符 |
C3_HALFWIDTH | 0x40 | 半角字符 |
C3_FULLWIDTH | 0x80 | 全角字符 |
C3_IDEOGRAPH | 0x100 | 表意字符 |
C3_KASHIDA | 0x200 | 阿拉伯语Kashida字符 |
C3_ALPHA | 0x8000 | 所有语言字符(字母,音节和表意) |
不适用: | ||
C3_NOTAPPLICABLE | 0x0 | 不适用 |
也可以看看