当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ mbrtoc32()用法及代码示例


C++ 中的 mbrtoc32() 函数将窄多字节字符转换为 32 位字符表示。

mbrtoc32() 函数在<cuchar> 头文件中定义。

mbrtoc32() 原型

size_t mbrtoc32( char32_t* pc32, const char* s, size_t n, mbstate_t* ps);

mbrtoc32() 函数最多将 s 表示的 n 多字节字符转换为其等效的 utf-32 字符,并将其存储在 pc32 指向的内存位置。

如果 s 表示空指针,则 npc32 的值将被忽略,并且调用等效于 mbrtoc32(NULL, "", 1, ps)

如果生成的结果字符为空,则转换状态*ps 表示初始移位状态。

参数:

  • pc32:指向内存位置的指针,用于存储生成的 32 位字符。
  • s:指向要转换的多字节字符的指针。
  • n:要转换的 s 中的最大字节数。
  • ps :指向解释多字节字符串时使用的 mbstate_t 对象的指针。

返回:

mbrtoc32() 函数返回与以下情况匹配的以下值中的第一个:

  • 如果转换的字符是空字符,则为 0。
  • 成功转换为 32 位字符的多字节字符的字节数(最多 n )。
  • -3 如果来自 multi-char32_t 字符(例如代理对)的下一个 char32_t 现在已写入 *pc32 。在这种情况下,不会从输入中处理任何字节。
  • -2 如果下一个 n 字节构成不完整但到目前为止有效的多字节字符。在这种情况下,不会向 *pc32 写入任何内容。
  • -1 如果发生编码错误。在这种情况下,没有写入任何内容*pc32, errno 设置为EILSEQ和价值*ps未指定。

示例: mbrtoc32() 函数如何工作?

#include <cstdio>
#include <cstdlib>
#include <cuchar>
#include <iostream>
using namespace std;

int main(void)
{
	char32_t pc32;
	char s[] = "x" ;
	mbstate_t ps;
	int length;

	length = mbrtoc32(&pc32, s, MB_CUR_MAX, &ps);
	if (length < 0)
	{
		perror("mbrtoc32() fails to convert");
		exit(-1);
	}

	cout << "Multibyte string = " << s << endl;
	cout << "Length = " << length << endl;
	printf ("32-bit character = 0x%08hx\n", pc32);

	return 0;
}

运行程序时,输出将是:

Multibyte string = x
Length = 1
32-bit character = 0x00000078

相关用法


注:本文由纯净天空筛选整理自 C++ mbrtoc32()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。