字节分类
其中的每个例程均针对条件满意度测试多字节字符的指定字节。 除非另有指定,否则输出值受区域设置的 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 || _ismbbkprint 。 ismbbprint 包含空格字符 (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
扩展到当前区域设置中任意多字节字符的最大字节长度。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈