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