跳到主要内容

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