返回值

如果s不为NULL,则mbtowc()函数返回从s开始的已消耗字节数;如果s指向空字节,则返回0;如果失败则返回-1。

如果s为NULL,则当编码具有非平移状态时,mbtowc()函数返回非零;如果编码为无状态,则mbtowc()函数返回零。

MBTOWC - Linux手册页

Linux程序员手册 第3部分
更新日期: 2019-03-06

说明

此函数的主要情况是s不为NULL且pwc不为NULL时。在这种情况下,mbtowc()函数检查从s开始的多字节字符串中最多n个字节,提取下一个完整的多字节字符,将其转换为宽字符并将其存储在* pwc中。它更新仅mbtowc()函数已知的内部移位状态。如果s不指向空字节(aq \ 0aq),则返回s消耗的字节数,否则返回0。

如果从s开始的n个字节不包含完整的多字节字符,或者它们包含无效的多字节序列,则mbtowc()返回-1。即使多字节字符串包含冗余移位序列,即使n> = MB_CUR_MAX,也可能发生这种情况。

另一种情况是当s不为NULL但pwc为NULL时。在这种情况下,mbtowc()函数的行为如上所述,只是它不将转换后的宽字符存储在内存中。

第三种情况是当s为NULL时。在这种情况下,pwc和n被忽略。 mbtowc()函数将仅此函数已知的移位状态重置为初始状态,如果编码具有平凡的移位状态,则返回非零;如果编码为无状态,则返回零。

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
mbtowc()Thread safetyMT-Unsafe race

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/

备注

mbtowc()的行为取决于当前语言环境的LC_CTYPE类别。

此函数不是多线程安全的。函数mbrtowc(3)为相同的功能提供了更好的接口。

另外参见

MB_CUR_MAX(3),mblen(3),mbrtowc(3),mbstowcs(3),wcstombs(3),wctomb(3)

语法

#include <stdlib.h>

int mbtowc(wchar_t *pwc, const char *s, size_t n);

遵循规范

POSIX.1-2001,POSIX.1-2008,C99。

名称

mbtowc-将多字节序列转换为宽字符

日期:2019-08-20 18:00:52 来源:oir作者:oir