Share via


字节分类

其中的每个例程均针对条件满意度测试多字节字符的指定字节。 除非另有指定,否则输出值受区域设置的 LC_CTYPE 类别设置影响。 有关详细信息,请参阅 setlocale。 这些不带 _l 后缀的函数的版本使用为该区域设置相关的行为的当前区域设置;带有 _l 后缀的版本相同,只不过它们使用传递的区域设置参数。

注意

根据定义,0 和 127 之间的 ASCII 字符是所有多字节字符集的子集。 例如,日语的片假名字符集包括 ASCII 以及非 ASCII 字符。

下表中的预定义常量在 <ctype.h> 中定义。

多字节字符的字节分类例程

例程 字节测试条件
isleadbyte_isleadbyte_l 前导字节;测试结果取决于当前区域设置的 LC_CTYPE 类别设置
_ismbbalnum_ismbbalnum_l isalnum || _ismbbkalnum
_ismbbalpha_ismbbalpha_l isalpha || _ismbbkalpha
_ismbbgraph_ismbbgraph_l _ismbbprint 相同,但是 _ismbbgraph 不包含空格字符 (0x20)
_ismbbkalnum_ismbbkalnum_l 标点以外的非 ASCII 文本符号。 例如,仅在代码页 932 中,_ismbbkalnum 测试片假名字母数字
_ismbbkana_ismbbkana_l 片假名 (0xA1 - 0xDF),仅代码页 932
_ismbbkprint_ismbbkprint_l 非 ASCII 文本或非 ASCII 标点符号。 例如,仅在代码页 932 中,_ismbbkprint 测试片假名字母数字或片假名标点(范围:0xA1 - 0xDF)。
_ismbbkpunct_ismbbkpunct_l 非 ASCII 标点。 例如,仅在代码页 932 中,_ismbbkpunct 测试片假名标点。
_ismbblead_ismbblead_l 多字节字符的第一个字节。 例如,仅在代码页 932 中,有效范围为 0x81 - 0x9F 以及 0xE0 - 0xFC。
_ismbbprint_ismbbprint_l isprint || _ismbbkprintismbbprint 包含空格字符 (0x20)
_ismbbpunct_ismbbpunct_l ispunct || _ismbbkpunct
_ismbbtrail_ismbbtrail_l 多字节字符的第二个字节。 例如,仅在代码页 932 中,有效范围为 0x40 - 0x7E 以及 0x80 - 0xEC。
_ismbslead_ismbslead_l 前导字节(在字符串上下文中)
ismbstrail_ismbstrail_l 结尾字节(在字符串上下文中)
_mbbtype_mbbtype_l 基于上一个字节返回字节类型
_mbsbtype_mbsbtype_l 返回字符串内的字节类型
mbsinit 跟踪多字节字符转换的状态。

<limits.h> 中定义的 MB_LEN_MAX 宏扩展到任意多字节字符可具有的最大字节长度。 在 <stdlib.h> 中定义的 MB_CUR_MAX 扩展到当前区域设置中任意多字节字符的最大字节长度。

另请参阅

按类别分的通用 C 运行时例程