©
Dieses Dokument verwendetPHP-Handbuch für chinesische WebsitesFreigeben
以空字符结尾的多字节字符串(NTMBS)或“多字节字符串”是一个非零字节序列,后跟一个值为零的字节(终止空字符)。
存储在该字符串中的每个字符可占用多于一个字节。 用于表示多字节字符串中字符的编码是特定于语言环境的:它可以是UTF-8,GB18030,EUC-JP,Shift-JIS等。例如,字符数组{'\ xe4','\ xbd ','\ xa0','\ xe5','\ xa5','\ xbd','\ 0'}是以UTF-8多字节编码形式存储字符串“你好”的NTMBS:前三个字节编码字符【你】,接下来的三个字节编码字符【好】。 在GB18030中编码的字符串是字符数组{'\ xc4','\ xe3','\ xba','\ xc3','\ 0'},其中两个字符中的每一个都被编码为一个双字节 序列。
在某些多字节编码中,任何给定的多字节字符序列都可能表示不同的字符,这取决于先前的字节序列,称为“移位序列”。这种编码被称为状态依赖:需要了解当前的转换状态来解释每个字符。NTMBS只有在开始和结束于初始转换状态时才有效:如果使用移位序列,则相应的非移位序列必须存在于终止空字符之前。这种编码的例子是BOCU-1和SCSU。
多字节字符串与空字符串字符串(NTBS)是布局兼容的,也就是说,除了计算字符数外,可以使用相同的工具来存储,复制和检查。如果正确的语言环境有效,I / O函数还处理多字节字符串。使用以下与区域设置相关的转换函数,可以将多字节字符串转换为宽字符串并从中转换为宽字符串:
| 在头文件
|:----|
| mblen | 返回下一个多字节字符(函数)中的字节数|
| mbtowc | 将下一个多字节字符转换为宽字符(函数)|
| wctombwctomb_s(C11)| 将宽字符转换为其多字节表示(函数)|
| mbstowcsmbstowcs_s(C11)| 将窄多字节字符串转换为宽字符串(函数)|
| wcstombswcstombs_s(C11)| 将宽字符串转换为窄多字节字符串(函数)|
| 在头文件
| mbsinit(C95)| 检查mbstate_t对象是否代表初始转换状态(函数)|
| btowc(C95)| 如果可能的话将单字节窄字符扩展为宽字符(函数)|
| wctob(C95)| 如果可能,则将宽字符缩小为单字节窄字符|(函数)
| mbrlen(C95)| 返回给定状态(函数)下一个多字节字符的字节数|
| mbrtowc(C95)| 将下一个多字节字符转换为宽字符,给定状态(函数)|
| wcrtombwcrtomb_s(C95)(C11)| 将宽字符转换为其多字节表示,给定状态(函数)|
| mbsrtowcsmbsrtowcs_s(C95)(C11)| 将一个窄的多字节字符串转换为宽字符串,给定状态(函数)|
| wcsrtombswcsrtombs_s(C95)(C11)| 将宽字符串转换为窄多字节字符串,给定状态(函数)|
| 在头文件
| mbrtoc16(C11)| 从一个窄多字节字符串(函数)生成下一个16位宽字符 |
| c16rtomb(C11)| 将16位宽字符转换为窄多字节字符串(函数)|
| mbrtoc32(C11)| 从一个窄多字节字符串(函数)生成下一个32位宽字符|
| c32rtomb(C11)| 将32位宽字符转换为窄多字节字符串(函数)|
| 在头文件
|:----|
| mbstate_t(C95)| 转换多字节字符串(类)所需的转换状态信息|
| 在头文件
| char16_t(C11)| 16位宽字符类型(typedef)|
| char32_t(C11)| 32位宽字符类型(typedef)|
| 在头文件
|:----|
| MB_LEN_MAX | 对于任何受支持的语言环境(宏常量),多字节字符中的最大字节数|
| 在头文件
| MB_CUR_MAX | 当前语言环境(宏变量)中多字节字符中的最大字节数|
| 在头文件
| __STDC_UTF_16__(C11)| 表示mbrtoc16和c16rtomb(宏常量)使用UTF-16编码|
| __STDC_UTF_32__(C11)| 指示由mbrtoc32和c32rtomb(宏常量)使用UTF-32编码|
C11标准(ISO / IEC 9899:2011):
7.10整数类型的大小
7.22常用工具
7.28 Unicode实用程序
7.29扩展的多字节和宽字符实用程序
7.31.12通用工具
7.31.16扩展的多字节和宽字符实用程序
K.3.6通用工具
K.3.9扩展的多字节和宽字符实用程序
C99标准(ISO / IEC 9899:1999):
7.10整数类型的大小
7.20通用工具
7.24扩展的多字节和宽字符实用程序
7.26.10通用工具
7.26.12扩展的多字节和宽字符实用程序
C89 / C90标准(ISO / IEC 9899:1990):
4.1.4限制
4.10一般实用程序
4.13.7通用工具
| 用于Null终止的多字节字符串的C ++文档 |
|:----|
本文档系腾讯云云+社区成员共同维护,如有问题请联系 yunjia_community@tencent.com
在头文件 |
|
|
---|---|---|
int iswdigit(wint_t ch); |
|
(自C95以来) |
检查给定的宽字符是否对应(如果缩小)十个十进制数字字符0123456789中的一个。
CH |
- |
宽字符 |
---|
如果宽字符是数字字符,则为非零值,否则为零。
iswdigit
与iswxdigit
是唯一不受当前安装的C语言环境影响的标准宽字符分类函数。
一些语言环境提供了检测非ASCII数字的附加字符类。
#include#include #include #include void test(wchar_t a3, wchar_t u3, wchar_t j3){ printf(" '%lc' '%lc' '%lc'\n", a3, u3, j3); printf("iswdigit %d %d %d\n", !!iswdigit(a3), !!iswdigit(u3), !!iswdigit(j3)); printf("jdigit: %d %d %d\n", !!iswctype(a3, wctype("jdigit")), !!iswctype(u3, wctype("jdigit")), !!iswctype(j3, wctype("jdigit")));} int main(void){ wchar_t a3 = L'3'; // the ASCII digit 3 wchar_t u3 = L'三'; // the CJK numeral 3 wchar_t j3 = L'3'; // the fullwidth digit 3 setlocale(LC_ALL, "en_US.utf8"); puts("In American locale:"); test(a3, u3, j3); setlocale(LC_ALL, "ja_JP.utf8"); puts("\nIn Japanese locale:"); test(a3, u3, j3);}
输出:
In American locale: '3' '三' '3'iswdigit 1 0 0jdigit: 0 0 0 In Japanese locale: '3' '三' '3'iswdigit 1 0 0jdigit: 0 0 1
C11标准(ISO / IEC 9899:2011):
7.30.2.1.5 iswdigit函数(p:449)
C99标准(ISO / IEC 9899:1999):
7.25.2.1.5 iswdigit函数(p:395)
isdigit |
检查一个字符是否是一个数字(功能) |
---|
| 用于iswdigit的C ++文档 |
ASCII 值 (十六进制) |
字符 |
iscntrl iswcntrl. |
isprint iswprint. |
isspace iswspace. |
isblank iswblank. |
isgraph iswgraph. |
ispunct iswpunct. |
isalnum iswalnum. |
isalpha iswalpha. |
isupper iswupper. |
islower iswlower. |
isdigit iswdigit. |
isxdigit iswxdigit. |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 - 8 |
0x00-0x08 |
控制码 (NUL, etc.) |
≠0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
9 |
0x09 |
tab (\t) |
≠0 |
0 |
≠0 |
≠0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
10 - 13 |
0x0A-0x0D |
空格 (\n,\v,\f,\r) |
≠0 |
0 |
≠0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
14 - 31 |
0x0E-0x1F |
控制码 |
≠0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
32 |
0x20 |
space |
0 |
≠0 |
≠0 |
≠0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
33 - 47 |
0x21-0x2F |
!"#$%&'()*+,-./ |
0 |
≠0 |
0 |
0 |
≠0 |
≠0 |
0 |
0 |
0 |
0 |
0 |
0 |
48 - 57 |
0x30-0x39 |
0123456789 |
0 |
≠0 |
0 |
0 |
≠0 |
0 |
≠0 |
0 |
0 |
0 |
≠0 |
≠0 |
58 - 64 |
0x3a-0x40 |
:;<=>?@ |
0 |
≠0 |
0 |
0 |
≠0 |
≠0 |
0 |
0 |
0 |
0 |
0 |
0 |
65 - 70 |
0x41-0x46 |
ABCDEF |
0 |
≠0 |
0 |
0 |
≠0 |
0 |
≠0 |
≠0 |
≠0 |
0 |
0 |
≠0 |
71 - 90 |
0x47-0x5A |
GHIJKLMNOPQRSTUVWXYZ |
0 |
≠0 |
0 |
0 |
≠0 |
0 |
≠0 |
≠0 |
≠0 |
0 |
0 |
0 |
91 - 96 |
0x5B-0x60 |
[]^_` | 0 | ≠0 | 0 | 0 | ≠0 | ≠0 | 0 | 0 | 0 | 0 | 0 | 0 | |
||||||||||||
97 -102 |
0x61-0x66 |
abcdef |
0 |
≠0 |
0 |
0 |
≠0 |
0 |
≠0 |
≠0 |
0 |
≠0 |
0 |
≠0 |
103-122 |
0x67-0x7A |
ghijklmnopqrstuvwxyz |
0 |
≠0 |
0 |
0 |
≠0 |
0 |
≠0 |
≠0 |
0 |
≠0 |
0 |
0 |
123-126 |
0x7B-0x7E |
{|}~ |
0 |
≠0 |
0 |
0 |
≠0 |
≠0 |
0 |
0 |
0 |
0 |
0 |
0 |
127 |
0x7F |
退格 (DEL) |
≠0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |