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()用法及代码示例
- C++ wcstold()用法及代码示例
- C++ wctrans()用法及代码示例
- C++ wcerr用法及代码示例
- C++ wcsftime()用法及代码示例
- C++ wcstod()用法及代码示例
- C++ wcscspn()用法及代码示例
- C++ wcsncmp()用法及代码示例
- C++ wcin用法及代码示例
- C++ wcstok()用法及代码示例
- C++ wcsstr()用法及代码示例
- C++ wcsrchr()用法及代码示例
- C++ wctob()用法及代码示例
- C++ wcsncpy()用法及代码示例
- C++ wcslen()用法及代码示例
- C++ wcsspn()用法及代码示例
- C++ wclog用法及代码示例
- C++ wcschr()用法及代码示例
- C++ wctomb()用法及代码示例
- C++ wcstof()用法及代码示例
注:本文由纯净天空筛选整理自 C++ wcrtomb()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。