?
This document uses PHP Chinese website manual Release
以空字符結(jié)尾的多字節(jié)字符串(NTMBS)或“多字節(jié)字符串”是一個非零字節(jié)序列,后跟一個值為零的字節(jié)(終止空字符)。
存儲在該字符串中的每個字符可占用多于一個字節(jié)。 用于表示多字節(jié)字符串中字符的編碼是特定于語言環(huán)境的:它可以是UTF-8,GB18030,EUC-JP,Shift-JIS等。例如,字符數(shù)組{'\ xe4','\ xbd ','\ xa0','\ xe5','\ xa5','\ xbd','\ 0'}是以UTF-8多字節(jié)編碼形式存儲字符串“你好”的NTMBS:前三個字節(jié)編碼字符【你】,接下來的三個字節(jié)編碼字符【好】。 在GB18030中編碼的字符串是字符數(shù)組{'\ xc4','\ xe3','\ xba','\ xc3','\ 0'},其中兩個字符中的每一個都被編碼為一個雙字節(jié) 序列。
在某些多字節(jié)編碼中,任何給定的多字節(jié)字符序列都可能表示不同的字符,這取決于先前的字節(jié)序列,稱為“移位序列”。這種編碼被稱為狀態(tài)依賴:需要了解當(dāng)前的轉(zhuǎn)換狀態(tài)來解釋每個字符。NTMBS只有在開始和結(jié)束于初始轉(zhuǎn)換狀態(tài)時才有效:如果使用移位序列,則相應(yīng)的非移位序列必須存在于終止空字符之前。這種編碼的例子是BOCU-1和SCSU。
多字節(jié)字符串與空字符串字符串(NTBS)是布局兼容的,也就是說,除了計算字符數(shù)外,可以使用相同的工具來存儲,復(fù)制和檢查。如果正確的語言環(huán)境有效,I / O函數(shù)還處理多字節(jié)字符串。使用以下與區(qū)域設(shè)置相關(guān)的轉(zhuǎn)換函數(shù),可以將多字節(jié)字符串轉(zhuǎn)換為寬字符串并從中轉(zhuǎn)換為寬字符串:
| 在頭文件<stdlib.h>中定義 |
|:----|
| mblen | 返回下一個多字節(jié)字符(函數(shù))中的字節(jié)數(shù)|
| mbtowc | 將下一個多字節(jié)字符轉(zhuǎn)換為寬字符(函數(shù))|
| wctombwctomb_s(C11)| 將寬字符轉(zhuǎn)換為其多字節(jié)表示(函數(shù))|
| mbstowcsmbstowcs_s(C11)| 將窄多字節(jié)字符串轉(zhuǎn)換為寬字符串(函數(shù))|
| wcstombswcstombs_s(C11)| 將寬字符串轉(zhuǎn)換為窄多字節(jié)字符串(函數(shù))|
| 在頭文件<wchar.h>中定義 |
| mbsinit(C95)| 檢查mbstate_t對象是否代表初始轉(zhuǎn)換狀態(tài)(函數(shù))|
| btowc(C95)| 如果可能的話將單字節(jié)窄字符擴(kuò)展為寬字符(函數(shù))|
| wctob(C95)| 如果可能,則將寬字符縮小為單字節(jié)窄字符|(函數(shù))
| mbrlen(C95)| 返回給定狀態(tài)(函數(shù))下一個多字節(jié)字符的字節(jié)數(shù)|
| mbrtowc(C95)| 將下一個多字節(jié)字符轉(zhuǎn)換為寬字符,給定狀態(tài)(函數(shù))|
| wcrtombwcrtomb_s(C95)(C11)| 將寬字符轉(zhuǎn)換為其多字節(jié)表示,給定狀態(tài)(函數(shù))|
| mbsrtowcsmbsrtowcs_s(C95)(C11)| 將一個窄的多字節(jié)字符串轉(zhuǎn)換為寬字符串,給定狀態(tài)(函數(shù))|
| wcsrtombswcsrtombs_s(C95)(C11)| 將寬字符串轉(zhuǎn)換為窄多字節(jié)字符串,給定狀態(tài)(函數(shù))|
| 在頭文件<uchar.h>中定義 |
| mbrtoc16(C11)| 從一個窄多字節(jié)字符串(函數(shù))生成下一個16位寬字符 |
| c16rtomb(C11)| 將16位寬字符轉(zhuǎn)換為窄多字節(jié)字符串(函數(shù))|
| mbrtoc32(C11)| 從一個窄多字節(jié)字符串(函數(shù))生成下一個32位寬字符|
| c32rtomb(C11)| 將32位寬字符轉(zhuǎn)換為窄多字節(jié)字符串(函數(shù))|
| 在頭文件<wchar.h>中定義 |
|:----|
| mbstate_t(C95)| 轉(zhuǎn)換多字節(jié)字符串(類)所需的轉(zhuǎn)換狀態(tài)信息|
| 在頭文件<uchar.h>中定義 |
| char16_t(C11)| 16位寬字符類型(typedef)|
| char32_t(C11)| 32位寬字符類型(typedef)|
| 在頭文件<limits.h>中定義 |
|:----|
| MB_LEN_MAX | 對于任何受支持的語言環(huán)境(宏常量),多字節(jié)字符中的最大字節(jié)數(shù)|
| 在頭文件<stdlib.h> 中定義|
| MB_CUR_MAX | 當(dāng)前語言環(huán)境(宏變量)中多字節(jié)字符中的最大字節(jié)數(shù)|
| 在頭文件<uchar.h>中定義 |
| __STDC_UTF_16__(C11)| 表示mbrtoc16和c16rtomb(宏常量)使用UTF-16編碼|
| __STDC_UTF_32__(C11)| 指示由mbrtoc32和c32rtomb(宏常量)使用UTF-32編碼|
C11標(biāo)準(zhǔn)(ISO / IEC 9899:2011):
7.10整數(shù)類型的大小<limits.h>(p:222)
7.22常用工具<stdlib.h>(p:340-360)
7.28 Unicode實用程序<uchar.h>(p:398-401)
7.29擴(kuò)展的多字節(jié)和寬字符實用程序<wchar.h>(p:402-446)
7.31.12通用工具<stdlib.h>(p:456)
7.31.16擴(kuò)展的多字節(jié)和寬字符實用程序<wchar.h>(p:456)
K.3.6通用工具<stdlib.h>(p:604-614)
K.3.9擴(kuò)展的多字節(jié)和寬字符實用程序<wchar.h>(p:627-651)
C99標(biāo)準(zhǔn)(ISO / IEC 9899:1999):
7.10整數(shù)類型的大小<limits.h>(p:203)
7.20通用工具<stdlib.h>(p:306-324)
7.24擴(kuò)展的多字節(jié)和寬字符實用程序<wchar.h>(p:348-392)
7.26.10通用工具<stdlib.h>(p:402)
7.26.12擴(kuò)展的多字節(jié)和寬字符實用程序<wchar.h>(p:402)
C89 / C90標(biāo)準(zhǔn)(ISO / IEC 9899:1990):
4.1.4限制<float.h>和<limits.h>
4.10一般實用程序<stdlib.h>
4.13.7通用工具<stdlib.h>
| 用于Null終止的多字節(jié)字符串的C ++文檔 |
|:----|
本文檔系騰訊云云+社區(qū)成員共同維護(hù),如有問題請聯(lián)系 yunjia_community@tencent.com
在頭文件<wctype.h>中定義 | ||
---|---|---|
int iswdigit(wint_t ch); | (自C95以來) |
檢查給定的寬字符是否對應(yīng)(如果縮?。┦畟€十進(jìn)制數(shù)字字符0123456789中的一個。
CH | - | 寬字符 |
---|
如果寬字符是數(shù)字字符,則為非零值,否則為零。
iswdigit
與iswxdigit
是唯一不受當(dāng)前安裝的C語言環(huán)境影響的標(biāo)準(zhǔn)寬字符分類函數(shù)。
一些語言環(huán)境提供了檢測非ASCII數(shù)字的附加字符類。
#include <stdio.h>#include <wctype.h>#include <wchar.h>#include <locale.h> 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標(biāo)準(zhǔn)(ISO / IEC 9899:2011):
7.30.2.1.5 iswdigit函數(shù)(p:449)
C99標(biāo)準(zhǔn)(ISO / IEC 9899:1999):
7.25.2.1.5 iswdigit函數(shù)(p:395)
isdigit | 檢查一個字符是否是一個數(shù)字(功能) |
---|
| 用于iswdigit的C ++文檔 |
ASCII 值 (十六進(jìn)制) | 字符 | 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 |