C / C ++中的mbrtoc16()及其示例

在本文中,我们将讨论C ++ STL中std::mbrtoc16()函数的工作,语法和示例。

什么是std::mbrtoc16()?

std::mbrtoc16()函数是C ++ STL中的内置函数,在<cuchar>头文件中定义。此函数用于将一个狭窄的多字节字符转换为UTF-16字符表示形式。

如果关联的字符指针不为null,并且所有其他参数也被接受,则它将转换相应的16位字符。

语法

size_t mbrtoc16( char16_t* pc16, char* str, size_t n, mbstate_t* ps);

参数

该函数接受以下参数-

  • pc16-这是指向我们要存储输出的位置的指针。

  • str-用作输入的字符串。

  • n-这是要检查的字节数。

  • ps-当我们解释多字节字符串时,它是指向状态对象的指针。

返回值

该函数的返回值根据以下条件而有所不同-

  • 0-当必须转换的str中的字符为NULL时,该函数将返回零。

  • 1…n-从字符串* str转换而来的多字节字符的字节数。

  • -3-如果存在代理对,则char16_t来自multi-char16_t。输入中无字节。

  • -2-当接下来的n个字节不完整但到目前为止是有效的多字节字符时,我们将得到-2。

  • -1-当我们遇到编码错误时,我们得到-1,没有任何内容写入* pc16。

示例

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <uchar.h>
#include <wchar.h>
using namespace std;
int main(void){
   char16_t hold;
   char str[] = "I";
   mbstate_t arr{};
   int len;
   //初始化功能
   len = mbrtoc16(&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("16-bit character = 0g%02hd\n", hold);
}

输出结果

String is: I
Length is: 1
16-bit character = 0g73