跳转至内容

C 编程/wchar.h/mbrtowc

来自维基教科书,自由的教科书

mbrtowc() 函数用于使用转换状态将多字节字符转换为宽字符。

mbrtowc()

[编辑 | 编辑源代码]

mbrtowc() 的功能

[编辑 | 编辑源代码]


mbrtowc() 使用转换状态将多字节字符转换为宽字符

mbrtowc() 函数的概要

[编辑 | 编辑源代码]

#include <wchar.h>

size_t mbrtowc(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps);


mbrtowc() 函数的描述

[编辑 | 编辑源代码]


假设 s 是一个空指针,则 mbrtowc() 函数可以调用为
mbrtowc(NULL, "", 1, ps);
这里 pwc 和 n 的值被忽略。
如果 s 不为空,函数应该检查以 s 指向的第一个字节开始的 n 个字节,以确定完成下一个字符所需的字节数,并确定对应宽字符的值。如果 pwc 不为空指针,它会将该值存储在 pwc 指向的对象中。如果该对应的宽字符是宽空字符,那么无论描述的最终状态是什么,它都是初始转换状态。
如果指定的 state 指针(即 ps)为空指针,则 mbrtowc() 函数应使用它自己的 mbstate_t 对象,该对象应在程序开始时初始化为初始转换状态。否则,使用 ps 指向的 mbstate_t 对象来描述相关字符序列的当前转换状态。

使用的参数

[编辑 | 编辑源代码]


s:

s 用作要转换或计数的字符串的字节。

n:

n 用来指定要检查的最大字节数。

ps:

ps 是转换状态。如果为空,则使用内部 mbstate_t 对象。

返回值

[编辑 | 编辑源代码]


0:

当下一个计数或更少的字节完成表示空宽字符的多字节字符时,它返回 0。

>0:

当下一个计数或更少的字节完成有效的多字节字符时,它返回大于零的值(即正值),返回值是完成多字节字符的字节数。

-1:

当发生编码错误时,它返回 -1,即下一个计数或更少的字节没有为完整且有效的多字节字符做出贡献,errno 值将为 EILSEQ,转换状态将变得混乱,因为它可以被解释为更多种方式。

-2

当下一个计数字节为不完整的多字节字符,并且所有计数字节都被处理时,它返回 -2。

http://pubs.opengroup.org/onlinepubs/009604499/functions/mbrtowc.html

华夏公益教科书