GetStringTypeW

【勇芳软件工作室】汉化HomePreviousNext

GetStringTypeW函数返回指定源字符串中字符的字符类型信息。对于字符串中的每个字符,该函数设置输出数组的相应16位元素中的一个或多个位。每个位都标识给定的字符类型,例如字符是字母,数字还是两者。

BOOL GetStringTypeW(

DWORD 【dwInfoType】,//信息类型选项
LPCWSTR 【lpSrcStr】,//源字符串的地址
INT 【cchSrc】,//字符串中的字符数
LPWORD 【lpCharType】//输出缓冲区地址
); 

参数

【dwInfoType】

指定用户想要检索的字符信息的类型。各种类型分为不同的级别(有关每种类型中包含的信息的列表,请参阅以下备注部分)。此参数可以指定以下字符类型标志之一:

CT_CTYPE1检索字符类型信息。
CT_CTYPE2检索双向布局信息。
CT_CTYPE3检索文本处理信息。

【lpSrcStr】

指向要求哪个字符类型的字符串。如果【cchSrc】为-1,则假定字符串为空终止。这必须是一个Unicode字符串。

【cchSrc】

指定【lpSrcStr】参数指向的字符串的大小(以字符为单位)。如果此计数包含一个空终止符,该函数返回空终止符的字符类型信息。如果此值为-1,则假定字符串为空终止,并自动计算长度。

【lpCharType】

指向一组16位值。此数组的长度必须足够大,以便为【cchSrc】参数中指定的字符数接收一个16位值。当函数返回时,该数组包含与源字符串中每个Unicode字符相对应的一个字。

返回值

如果函数成功,返回值不为零。

如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.GetLastError可能会返回以下错误代码之一:

ERROR_INVALID_FLAGS
ERROR_INVALID_PARAMETER

备注

请注意,GetStringTypeA 功能还有一个参数超过GetStringTypeW功能:GetStringTypeA具有名为【语言环境】LCID的第一个参数。此参数不存在于GetStringTypeW函数中。由于参数差异,应用程序不能通过使用#define UNICODE开关自动调用WW版本的GetStringType*.应用程序可以通过使用GetStringTypeEx来规避此限制;它是推荐的Win32功能。

【lpSrcStr】【lpCharType】指针不能相同。如果它们相同,则该函数失败,GetLastError返回ERROR_INVALID_PARAMETER。

字符型位分为几个级别。一个级别的信息可以通过单次调用该函数来检索。每个级别限制为16位信息,因此限制为每个字符的16位表示的其他映射例程也可以返回字符类型信息。

此函数支持的字符类型包括以下内容。

C型1

这些类型支持ANSI C和POSIX(LC_CTYPE)字符输入功能。当【dwInfoType】参数设置为CT_CTYPE1时,这些值的组合将返回到【lpCharType】参数指向的数组中。

名称含义
C1_UPPER0x0001大写
C1_LOWER0x0002小写
C1_DIGIT0x0004小数位数
C1_SPACE0x0008空格字符
C1_PUNCT0x0010标点
C1_CNTRL0x0020控制字符
C1_BLANK0x0040空白字符
C1_XDIGIT0x0080十六进制数字
C1_ALPHA0x0100任何语言字符:字母,音节或表意

以下字符类型是基本类型的常量或可计算的,不需要此函数的支持。

类型描述
字母数字字母字符和数字(C1_ALPHA和C1_DIGIT)
可打印图形字符和空白(除C1_CNTRL之外的所有C1_ *类型)

Ctype 2

这些类型支持Unicode文本的正确布局。方向属性被分配,使得由Unicode标准化的双向布局算法产生准确的结果。这些类型是互斥的。有关使用这些属性的更多信息,请参阅【Unicode标准:全球字符编码,第1卷和第2卷,】 Addison Wesley Publishing Company:1991,1992,ISBN 0201567881。

名称含义
强大:
C2_LEFTTORIGHT0x1左到右
C2_RIGHTTOLEFT0x2右到左
:
C2_EUROPENUMBER0x3欧洲数字,欧洲数字
C2_EUROPESEPARATOR0x4欧式数字分隔符
C2_EUROPETERMINATOR0x5欧洲数字终结器
C2_ARABICNUMBER0x6阿拉伯数字
C2_COMMONSEPARATOR0x7常用数字分隔符
中性:
C2_BLOCKSEPARATOR0x8块分隔符
C2_SEGMENTSEPARATOR0x9段分隔符
C2_WHITESPACE0xA白色空间
C2_OTHERNEUTRAL0xB其他中立者
不适用:
C2_NOTAPPLICABLE0x0没有隐含的方向性(例如,控制代码)

C型3

这些类型旨在作为一般文本处理或标准C库函数所需的POSIX类型扩展的占位符。这些类型在当前版本的Windows NT中受支持。当【dwInfoType】设置为CT_CTYPE3时,返回这些值的组合。

名称含义
C3_NONSPACING0x1无标记
C3_DIACRITIC0x2符号不规则的标记
C3_VOWELMARK0x4元音无指标
C3_SYMBOL0x8符号
C3_KATAKANA0x10片假名人物
C3_HIRAGANA0x20平假名字符
C3_HALFWIDTH0x40半角字符
C3_FULLWIDTH0x80全角字符
C3_IDEOGRAPH0x100表意字符
C3_KASHIDA0x200阿拉伯语Kashida字符
C3_ALPHA0x8000所有语言字符(字母,音节和表意)
不适用:
C3_NOTAPPLICABLE0x0不适用

也可以看看

GetLocaleInfo, GetStringTypeA, GetStringTypeEx