📜  C++ mbrtoc16()

📅  最后修改于: 2020-09-25 09:25:46             🧑  作者: Mango

C++中的mbrtoc16() 函数将一个狭窄的多字节字符转换为16位字符表示形式。

mbrtoc16() 函数在头文件中定义。

mbrtoc16()原型

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

mbrtoc16() 函数最多将s表示的n多字节字符转换为等效的utf-16 字符,并将其存储在pc16指向的内存位置。

如果s表示空指针, pc16忽略npc16的值,并且对的调用等效于mbrtoc16(NULL,“”,1,ps)。

如果产生的结果字符为空,则转换状态*ps表示初始移位状态。

mbrtoc16()参数

mbrtoc16()返回值

mbrtoc16() 函数返回与以下情况匹配的以下值中的第一个:

示例:mbrtoc16() 函数如何工作?

#include 
#include 
#include 
#include 
using namespace std;

int main(void)
{
    char16_t pc16;
    char s[] = "x" ;
    mbstate_t ps{};
    int length;

    length = mbrtoc16(&pc16, s, MB_CUR_MAX, &ps);

    if (length < 0)
    {
        perror("mbrtoc16() fails to convert");
        exit(-1);
    }

    cout << "Multibyte string = " << s << endl;
    cout << "Length = " << length << endl;
    printf ("16-bit character = 0x%04hx\n", pc16);

    return 0;
}

运行该程序时,输出为:

Multibyte string = x
Lengt>h = 1
16-bit character = 0x0078