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


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


C++ 中的wcrtomb() 函数将宽字符转换为其窄多字节表示。

wcrtomb() 在<cwchar> 头文件中定义。

wcrtomb()原型

size_t wcrtomb( char* s, wchar_t wc, mbstate_t* ps );

wcrtomb() 函数将 wc 表示的宽字符转换为窄多字节字符,并存储在 s 指向的地址中。

  • 如果s不是空指针,wcrtomb() 函数确定存储多字节表示所需的最大字节数wc并将其存储在指向的内存位置s.最多MB_CUR_MAX可以写入字节。的价值ps根据需要更新。
  • 如果s 是空指针,则对于某些内部缓冲区buf,调用等效于wcrtomb(buf, L'\0', ps)
  • 如果 wc == L'\0' ,则存储一个空字节。

参数:

  • s:指向多字节字符数组的指针以存储结果。
  • wc:要转换的宽字符。
  • ps:指向解释多字节字符串时使用的转换状态的指针

返回:

  • 成功时,wcrtomb() 函数返回写入第一个元素由 s 指向的字符数组的字节数。
  • 失败时(即 wc 不是有效的宽字符),它返回 -1,errno 设置为EILSEQ并使 *ps 处于未指定状态。

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

#include <cwchar>
#include <clocale>
#include <iostream>
using namespace std;

int main()
{
	setlocale(LC_ALL, "en_US.utf8");
	
	wchar_t str[] = L"u\u00c6\u00f5\u01b5";
	char s[16];
	int retVal;
	
	mbstate_t ps = mbstate_t();
	for (int i=0; i<wcslen(str); i++)
	{
		retVal = wcrtomb(s, str[i], &ps);
		if (retVal!=-1)
		cout << "Size of " << s << " is " << retVal << " bytes" << endl;
		else
		cout << "Invalid wide character" << endl;
	}
	
	return 0;
}

运行程序时,输出将是:

Size of u is 1 bytes
Size of Æ is 2 bytes
Size of õ is 2 bytes
Size of Ƶ is 2 bytes

相关用法


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