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
表示空指针,则 n
和 pc32
的值将被忽略,并且调用等效于 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()用法及代码示例
- C++ mbrtoc16()用法及代码示例
- C++ mbrtowc()用法及代码示例
- C++ mbrlen()用法及代码示例
- C++ mbtowc()用法及代码示例
- C++ mbsinit()用法及代码示例
- C++ mbstowcs()用法及代码示例
- C++ mblen()用法及代码示例
- C++ mbsrtowcs()用法及代码示例
- C++ map lower_bound()用法及代码示例
- C++ multimap key_comp()用法及代码示例
- C++ merge()用法及代码示例
- C++ multimap empty()用法及代码示例
- C++ multimap cend()用法及代码示例
- C++ multiset begin()、end()用法及代码示例
- C++ map::at()用法及代码示例
- C++ multiset value_comp()用法及代码示例
- C++ multimap insert()用法及代码示例
- C++ memset()用法及代码示例
- C++ map max_size()用法及代码示例
注:本文由纯净天空筛选整理自 C++ mbrtoc32()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。