4. wchar.h / wctype.h — 宽字符操作
提供宽字符操作。头文件: <wchar.h>, <wctype.h>。
4.1 宽字符字符串操作
wchar_t* wcscpy(wchar_t *dest, const wchar_t *src)
宽字符串拷贝。
- 输入: dest 目标, src 源
- 输出: wchar_t* dest
wchar_t* wcsncpy(wchar_t *dest, const wchar_t *src, size_t n)
定长宽字符串拷贝。
- 输入: dest 目标, src 源, n 最大字符数
- 输出: wchar_t* dest
wchar_t* wcscat(wchar_t *dest, const wchar_t *src)
宽字符串连接。
- 输入: dest 目标, src 源
- 输出: wchar_t* dest
wchar_t* wcsncat(wchar_t *dest, const wchar_t *src, size_t n)
定长宽字符串连接。
- 输入: dest 目标, src 源, n 最大追加字符数
- 输出: wchar_t* dest
int wcscmp(const wchar_t *s1, const wchar_t *s2)
宽字符串比较。
- 输入: s1 宽串1, s2 宽串2
- 输出: int 负=s1<s2, 零=相等, 正=s1>s2
int wcsncmp(const wchar_t *s1, const wchar_t *s2, size_t n)
定长宽字符串比较。
- 输入: s1 宽串1, s2 宽串2, n 最大字符数
- 输出: int 负=s1<s2, 零=相等, 正=s1>s2
size_t wcslen(const wchar_t *s)
获取宽字符串长度。
- 输入: s 宽字符串
- 输出: size_t 宽字符数(不含终止符)
wchar_t* wcschr(const wchar_t *s, wchar_t c)
查找宽字符(正向)
- 输入: s 宽字符串, c 宽字符
- 输出: wchar_t* 首次出现位置或 NULL
wchar_t* wcsrchr(const wchar_t *s, wchar_t c)
查找宽字符(反向)
- 输入: s 宽字符串, c 宽字符
- 输出: wchar_t* 最后出现位置或 NULL
wchar_t* wcsstr(const wchar_t *haystack, const wchar_t *needle)
查找宽子串。
- 输入: haystack 被搜索宽串, needle 子串
- 输出: wchar_t* 首次出现位置或 NULL
wchar_t* wcspbrk(const wchar_t *s, const wchar_t *accept)
查找宽字符集中任意字符。
- 输入: s 宽字符串, accept 接受字符集
- 输出: wchar_t* 首次匹配位置或 NULL
size_t wcsspn(const wchar_t *s, const wchar_t *accept)
计算前导接受宽字符数。
- 输入: s 宽字符串, accept 接受字符集
- 输出: size_t 前导连续属于 accept 的字符数
size_t wcscspn(const wchar_t *s, const wchar_t *reject)
计算前导非拒绝宽字符数。
- 输入: s 宽字符串, reject 拒绝字符集
- 输出: size_t 前导连续不属于 reject 的字符数
wchar_t* wcstok(wchar_t *str, const wchar_t *delim, wchar_t **saveptr)
分割宽字符串。
- 输入: str 宽字符串, delim 分隔符, saveptr 保存指针
- 输出: wchar_t* 当前 token 或 NULL
- 注意:
4.2 宽字符内存操作
wchar_t* wmemcpy(wchar_t *dest, const wchar_t *src, size_t n)
宽字符内存拷贝。
- 输入: dest 目标, src 源, n 字符数
- 输出: wchar_t* dest
- 注意: 不可重叠
wchar_t* wmemmove(wchar_t *dest, const wchar_t *src, size_t n)
可重叠宽字符内存拷贝。
- 输入: dest 目标, src 源, n 字符数
- 输出: wchar_t* dest
wchar_t* wmemset(wchar_t *s, wchar_t c, size_t n)
宽字符内存填充。
- 输入: s 地址, c 宽字符, n 字符数
- 输出: wchar_t* s
int wmemcmp(const wchar_t *s1, const wchar_t *s2, size_t n)
宽字符内存比较。
- 输入: s1 块1, s2 块2, n 字符数
- 输出: int 负=s1<s2, 零=相等, 正=s1>s2
wchar_t* wmemchr(const wchar_t *s, wchar_t c, size_t n)
在宽字符内存中查找。
- 输入: s 内存块, c 宽字符, n 字符数
- 输出: wchar_t* 首次出现位置或 NULL