C语言wchar头文件(wchar.h)中mbrtowc函数的用法及代码示例。
用法:
size_t mbrtowc (wchar_t* pwc, const char* pmb, size_t max, mbstate_t* ps);
将多字节序列转换为宽字符
该函数使用(并更新)由以下内容描述的换档状态ps。如果ps是一个空指针,该函数使用其自己的内部换档状态,只有在调用此函数时才需要进行更改。
如果mb指向空字符时,该函数将重置移位状态并在存储完后返回零。宽空字符在pwc。
使用空指针作为对函数的调用mb也会重置换档状态,而忽略参数pwc和最大限度(没有字符存储广告pwc)。
此函数的行为取决于LC_CTYPE所选类别C语言环境。
这是可重启的版本mbtowc(<cstdlib>)。
参数
- pwc
- 指向类型的对象的指针wchar_t。
或者,此参数可以是空指针,在这种情况下,该函数不存储wchar_t翻译,但仍返回多字节字符的字节长度。 - pmb
- 指向多字节字符的第一个字节的指针。
或者,可以使用空指针调用该函数,在这种情况下,该函数将重置移位状态(ps(或它自己的内部状态)返回初始状态,并返回零。 - max
- 读取的最大字节数mb。
宏常量MB_CUR_MAX定义在当前语言环境设置下可以形成多字节字符的最大字节数。
size_t是无符号整数类型。 - ps
- 指向一个指针mbstate_t定义转换状态的对象。
返回值
来自的字节数mb用来产生宽广的性格。如果这是null宽字符,或者mb是一个空指针,该函数返回零(在第一种情况下,空宽字符存储在pwc)。
如果最大限度的第一个字符mb形成一个不完整(但可能有效)的多字节字符,该函数返回(size_t)-2(没有值存储在pwc)。
否则,如果字符指向mb如果不形成有效的多字节字符(或一个字符的开头),则该函数将返回(size_t)-1和集errno至EILSEQ(没有值存储在pwc)。
注意size_t是无符号整数类型,因此可能返回的值都不小于零。
示例
/* mbrtowc example */
#include <wchar.h>
void printbuffer (const char* pt, size_t max)
{
size_t length;
wchar_t dest;
mbstate_t mbs;
mbrlen ( NULL, 0, &mbs ); /* initialize mbs */
while (max>0) {
length = mbrtowc(&dest,pt,max,&mbs);
if ((length==0)||(length>max)) break;
wprintf (L"[%lc]",dest);
pt+=length; max-=length;
}
}
int main()
{
const char str [] = "mbrtowc example";
printbuffer (str,sizeof(str));
return 0;
}
函数printbuffer按字符打印多字节字符串。
该示例在"C"语言环境,但是该函数支持支持多字节字符串的语言环境。
输出:
[m][b][r][t][o][w][c][ ][e][x][a][m][p][l][e] |
相关用法
- C语言 fgetwc用法及代码示例
- C语言 fgetws用法及代码示例
- C语言 fputwc用法及代码示例
- C语言 fputws用法及代码示例
- C语言 fwide用法及代码示例
- C语言 fwprintf用法及代码示例
- C语言 fwscanf用法及代码示例
- C语言 getwc用法及代码示例
- C语言 getwchar用法及代码示例
- C语言 putwc用法及代码示例
- C语言 putwchar用法及代码示例
- C语言 swprintf用法及代码示例
- C语言 swscanf用法及代码示例
- C语言 ungetwc用法及代码示例
- C语言 vfwprintf用法及代码示例
- C语言 vfwscanf用法及代码示例
- C语言 vswprintf用法及代码示例
- C语言 vswscanf用法及代码示例
- C语言 vwprintf用法及代码示例
- C语言 vwscanf用法及代码示例
- C语言 wprintf用法及代码示例
- C语言 wscanf用法及代码示例
- C语言 wcstod用法及代码示例
- C语言 wcstof用法及代码示例
- C语言 wcstol用法及代码示例
- C语言 wcstold用法及代码示例
- C语言 wcstoll用法及代码示例
- C语言 wcstoul用法及代码示例
- C语言 wcstoull用法及代码示例
- C语言 btowc用法及代码示例
- C语言 mbrlen用法及代码示例
- C语言 mbsinit用法及代码示例
- C语言 wcrtomb用法及代码示例
- C语言 wctob用法及代码示例
- C语言 wcsrtombs用法及代码示例
- C语言 wcscat用法及代码示例
- C语言 wcschr用法及代码示例
- C语言 wcscmp用法及代码示例
- C语言 wcscpy用法及代码示例
- C语言 wcscspn用法及代码示例
- C语言 wcslen用法及代码示例
- C语言 wcsncat用法及代码示例
- C语言 wcsncmp用法及代码示例
- C语言 wcsncpy用法及代码示例
- C语言 wcspbrk用法及代码示例
- C语言 wcsrchr用法及代码示例
- C语言 wcsspn用法及代码示例
- C语言 wcsstr用法及代码示例
- C语言 wcstok用法及代码示例
- C语言 wmemchr用法及代码示例
- C语言 wmemcmp用法及代码示例
- C语言 wmemcpy用法及代码示例
- C语言 wmemmove用法及代码示例
- C语言 wmemset用法及代码示例
- C语言 wcsftime用法及代码示例
注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C mbrtowc function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。