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


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


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

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

c32rtomb() 原型

size_t c32rtomb(char* s, char32_t c32, mbstate_t* ps);

c32rtomb() 函数将 utf-32 字符 c32 转换为其多字节等效字符,并将其存储在 s 指向的对象中。

如果s 表示一个空指针,则该调用等效于某些内部缓冲区 buf 的 c32rtomb(buf, U'\0', ps)。

如果 c32 是空宽字符,即 U'\0',则存储空字节。

参数:

  • s:指向存储多字节字符的字符数组的指针。
  • c32 :要转换的 32 位字符。
  • ps :指向解释多字节字符串时使用的 mbstate_t 对象的指针。

返回:

  • 成功时,c32rtomb() 函数返回写入 s 指向的字符数组的字节数。
  • 失败时,返回 -1 并将 errno 设置为EILSEQ.

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

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

int main()
{
	const char32_t str[] = U"C++ is super fast.";
	char s[50];
	mbstate_t ps{};
	size_t length;
	int j = 0;

	while (str[j])
	{
		length = c32rtomb(s, str[j], &ps);
		if ((length == 0) || (length > 50))
			break;

		for (int i=0; i<length; ++i)
			cout << s[i];
		++j;
	}

	return 0;
}

运行程序时,输出将是:

C++ is super fast.

相关用法


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