C 程式設計/wchar.h
外觀
< C 程式設計
(重定向自 C 程式設計/C 參考/wchar.h)wchar.h 是 C 標準庫 中的一個頭檔案。它是 1995 年對 C 程式語言標準擴充套件的一部分。它包含擴充套件的多位元組和寬字元實用程式。標準標頭檔案 <wchar.h> 包含在對寬流進行輸入和輸出操作時。它也可用於操作寬字串。[1]
C 是一種在以 7 位 ASCII 碼為主的字元集環境中開發的程式語言。因此,從那時起,8 位位元組成為最常見的編碼單位。但是,當為國際目的開發軟體時,它必須能夠表示不同的字元。例如,應提供用於表示印度、中文、日文書寫系統的字元編碼方案。使用簡單地是統一位元組數的字元可以消除處理這些不同的多位元組字元的不便。ANSI C 提供了一種型別,它允許將可變寬度字元作為稱為寬字元的統一大小資料物件進行操作。寬字元集是現有字元集的超集,包括 7 位 ASCII。[2]
標準標頭檔案 wchar.h 包含一些常量的定義或宣告。
- NULL
- 這是一個空指標常量。它永遠不會指向一個真實的物件。
- WCHAR_MIN
- 它表示型別 wchar_t 的下限或最小值。
- WCHAR_MAX
- 它表示型別 wchar_t 的上限或最大值。
- WEOF
- 它定義了型別 wint_t 的返回值,但該值不對應於擴充套件字元集的任何成員。WEOF 表示字元流的末尾,檔案末尾 (EOF) 或錯誤情況。[3]
- mbstate_t
- 型別 mbstate_t 的變數包含從一個函式呼叫到另一個函式呼叫所需的轉換狀態的所有資訊。
- size_t
- 它是一個大小/計數型別,它儲存 sizeof 運算子的結果或返回值。
- wchar_t
- 型別 wchar_t 的物件可以儲存寬字元。它也用於宣告或引用寬字元和寬字串。
- wint_t
- 此型別是一個整數型別,可以儲存與擴充套件字元集成員相對應的任何值。它可以儲存型別 wchar_t 的所有值,以及宏 WEOF 的值。此型別不受整數提升的影響。
| 名稱 | 註釋 |
|---|---|
wchar_t *wcscat(wchar_t *s1, const wchar_t *s2);
|
將 s2 指向的寬字串複製到 s1 指向的寬字串的末尾。 |
wchar_t *wcschr(const wchar_t *s, wchar_t c);
|
在寬字串 s 中搜索寬字元 c。 |
int wcscmp(const wchar_t *s1, const wchar_t *s2);
|
比較 s1 和 s2 指向的兩個寬字串。 |
int wcscoll(const wchar_t *s1, const wchar_t *s2);
|
使用當前區域設定的排序順序比較兩個寬字串 s1 和 s2。 |
size_t wcscspn(const wchar_t *s1, const wchar_t *s2);
|
返回 s1 的最大初始段的長度,該段完全由 s2 中沒有的程式碼組成。 |
wchar_t *wcscpy(wchar_t *s1, const wchar_t s2);
|
將 s2 指向的寬字串複製到 s1 指向的位置。 |
size_t wcslen(const wchar_t *s);
|
返回 s 指向的寬字串中的寬字元數(不包括終止空寬字元)。 |
| wchar_t *wcspbrk(const wchar_t *s1, const wchar_t *s2); | 搜尋 s1 中第一個與 s2 中任何一個元素相等的元素。 |
size_t wcsspn(const wchar_t *s1, const wchar_t *s2);
|
返回 s1 的最大初始段的長度,該段完全由 s2 中的程式碼組成。 |
| 名稱 | 註釋 |
|---|---|
wchar_t *wmemchr(const wchar_t *s, wchar_t c, size_t n);
|
在 s 指向的、大小為 n 的陣列中搜索第一個等於 c 的元素。 |
int wmemcmp(const wchar_t *s1, const wchar_t *s2, size_t n);
|
比較 s1 和 s2 指向的兩個陣列中的連續元素,直到找到不相等的元素。 |
wchar_t *wmemcpy(wchar_t *s1, const wchar_t *s2, size_t n);
|
將 s2 指向的陣列中的 n 個寬字元複製到 s1 指向的陣列中的寬字元中。如果 s1 和 s2 中的物件重疊,則行為未定義。 |
wchar *wmemmove(wchar_t *s1, const wchar_t *s2, size_t n);
|
即使陣列 s1 和 s2 中的物件重疊,也與 wmemcpy 函式類似。 |
wchar_t *wmemset(wchar_t *s, wchar_t c, size_t n)
|
將 s 指向的陣列的前 n 個元素設定為寬字元 c。 |
| 名稱 | 註釋 |
|---|---|
wint_t btowc(int c);
|
將 c 轉換為其等效寬字元後返回結果,如果出錯則返回 WEOF。 |
int wctob(wint_t c);
|
返回 c 的一個位元組或多位元組等效項,如果出錯則返回 WEOF。 |
| 名稱 | 註釋 |
|---|---|
wint_t fgetwc(FILE *stream);
|
從檔案中讀取寬字元。 |
wchar_t *fgetws(wchar_t *s, int n, FILE *stream);
|
從檔案中讀取寬字元字串。 |
wint_t fputwc(wchar_t *c, FILE *stream);
|
將寬字元寫入檔案。 |
int fputws(const wchar_t *s, FILE *stream);
|
將寬字串寫入檔案。 |
int fwprintf(FILE *stream, const wchar_t format,...);
|
首先生成格式化的文字,然後將其寫入檔案。 |
int fwscanf(FILE *stream, const wchar_t format,...);
|
從檔案中讀取格式化的文字。 |
wint_t getwc(FILE*stream);
|
從檔案中讀取寬字元。 |
wint_t getwchar()
|
從 stdin 讀取寬字元。 |
wint_t putwc(wchar_t c, FILE *stream);
|
將寬字元寫入檔案。 |
wint_t putwchar(wchar_t c);
|
將寬字元寫入 stdout。 |
- ↑ http://www.qnx.com/developers/docs/6.4.1/dinkum_en/c99/wchar.html
- ↑ http://books.google.co.in/books?id=4Mfe4sAMFUYC&pg=PT26&lpg=PT26&dq=wide+characters+as+superset&source=bl&ots=tPLP1nN4qh&sig=f2W0ys85Ms9lRdT4HBEf_yoNL2U&hl=en&ei=H3SMTpiJFpGzrAfzvOycAg&sa=X&oi=book_result&ct=result&resnum=2&sqi=2&ved=0CCIQ6AEwAQ#v=onepage&q&f=false
- ↑ http://publib.boulder.ibm.com/infocenter/zos/v1r12/index.jsp?topic=%2Fcom.ibm.zos.r12.bpxbd00%2Fwcharh.htm
- ↑ http://www.prenhall.com/jaeschke/pdf/w.pdf