在本文中,我们将讨论C ++ STL中std::mbrtoc32()函数的工作,语法和示例。
std::mbrtoc32()函数是C ++ STL中的内置函数,在<cuchar>头文件中定义。此函数用于将狭窄的多字节字符转换为UTF-32字符表示形式。
如果关联的字符指针不为null,并且所有其他参数也被接受,则它将转换相应的32位字符。
size_t mbrtoc32( char32_t* pc32, char* str, size_t n, mbstate_t* ps);
该函数接受以下参数-
pc32-这是指向我们要存储输出的位置的指针。
str-用作输入的字符串。
n-这是要检查的字节数。
ps-当我们解释多字节字符串时,它是指向状态对象的指针。
该函数的返回值根据以下条件而有所不同-
0-当必须转换的str中的字符为NULL时,该函数将返回零。
1…n-从字符串* str转换而来的多字节字符的字节数。
-3-如果存在代理对,则char32_t来自multi-char32_t。输入中无字节。
-2-当接下来的n个字节不完整但到目前为止是有效的多字节字符时,我们将得到-2。
-1-当我们遇到编码错误时,我们得到-1,没有任何内容写入* pc32。
#include <cstdio> #include <cstdlib> #include <iostream> #include <uchar.h> #include <wchar.h> using namespace std; int main(void) { char32_t hold; char str[] = "I"; mbstate_t arr{}; int len; //初始化功能 len = mbrtoc32(&hold, str, MB_CUR_MAX, &arr); if (len < 0) { perror("conversion failed"); exit(-1); } cout << "String is: " << str << endl; cout << "Length is: " << len << endl; printf("32-bit character = 0g%02hd\n", hold); }
输出结果
String is: I Length is: 1 32-bit character = 0g73
#include <cstdio> #include <cstdlib> #include <iostream> #include <uchar.h> #include <wchar.h> using namespace std; int main(void){ char32_t hold; char str[] = "I"; mbstate_t arr{}; int len; //初始化功能 len = mbrtoc32(&hold, str, MB_CUR_MAX, &arr); if (len < 0){ perror("conversion failed"); exit(-1); } cout << "String is: " << str << endl; cout << "Length is: " << len << endl; printf("32-bit character = 0x%08hx\n", hold); }
输出结果
String is: I Length is: 1 32-bit character = 0x0x000000490