mbrtoc32()是C / C++中的内置函数,可将狭窄的多字节字符转换为32位字符表示形式。它在C++的uchar.h头文件中定义。
语法:
size_t mbrtoc32( char32_t* pc32, const char* s, size_t n, mbstate_t* ps);
参数:该函数接受四个强制性参数,如下所述:
- s :指定要转换的多字节字符。
- pc32 :指定要存储的结果的32位字符的存储位置。
- n :指定s中要转换的最大字节数。
- ps :指定在解释多字节字符串时使用的mbstate_t对象。
返回值:该函数返回五个值,如下所示:
- 如果转换后的字符为空字符,则为0。
- 已成功转换为32位字符的多字节字符的字节数(最多n个)。
- -3,如果现在已将来自多个char32_t字符(例如代理对)中的下一个char16_t写入* pc32。在这种情况下,不会从输入中处理任何字节。
- -2,如果接下来的n个字节构成一个不完整但到目前为止仍然有效的多字节字符。在这种情况下,不会将任何内容写入* pc32。
- 如果发生编码错误,则为-1。在这种情况下,不会将任何内容写入* pc32,将errno设置为EILSEQ,并且未指定* ps的值。
下面的程序说明了上述函数。
程序1 :
// C++ program to illustrate the
// mbrtoc32() function
#include
#include
#include
#include
#include
using namespace std;
int main(void)
{
char32_t pc32;
char s[] = "S";
mbstate_t ps{};
int length;
// initializing the function
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%04hx\n", pc32);
return 0;
}
输出:
Multibyte string = S
Length = 1
32-bit character = 0x0053
程序2 :
// C++ program to illustrate the
// mbrtoc32() function
#include
#include
#include
#include
#include
using namespace std;
int main(void)
{
char32_t pc32;
char s[] = "S";
mbstate_t ps{};
int length;
// initializing the function
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 = S
Length = 1
32-bit character = 0x00000053
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。