📜  C / C++中的c16rtomb()函数

📅  最后修改于: 2021-05-25 23:36:57             🧑  作者: Mango

c16rtomb()是C / C++中的内置函数,可将16位字符表示形式转换为狭窄的多字节字符表示形式。它在C++的uchar.h头文件中定义。

语法

size_t c16rtomb(char* s, char16_t c16, mbstate_t* p)

参数:该函数接受三个强制性参数,如下所示:

  • s :指定要在其中存储多字节字符的字符串。
  • c16 :指定要转换的16位字符。
  • p :指定在解释多字节字符串时使用的mbstate_t对象的指针。

返回值:该函数返回两个值,如下所示:

  • 程序成功后,函数将返回写入s指向的字符数组的字节数。
  • 失败时,返回-1并将EILSEQ存储在错误号no中。

下面的程序说明了上述函数。

程序1

// C++ program to illustrate the
// c16rtomb () function on it's success
#include 
#include 
#include 
using namespace std;
  
int main()
{
    const char16_t str[] = u"Ishwar Gupta";
    char s[50];
    mbstate_t p{};
    size_t length;
    int j = 0;
  
    while (str[j]) {
        // initializing the function
        length = c16rtomb(s, str[j], &p);
        if ((length == 0) || (length > 50))
            break;
        for (int i = 0; i < length; ++i)
            cout << s[i];
        ++j;
    }
  
    return 0;
}
输出:
Ishwar Gupta

程序2

// C++ program to illustrate the
// c16rtomb () function on it's failure
#include 
#include 
#include 
using namespace std;
  
int main()
{
    const char16_t str[] = u"";
    char s[50];
    mbstate_t p{};
    size_t length;
    int j = 0;
  
    while (str[j]) {
        // initializing the function
        length = c16rtomb(s, str[j], &p);
        if ((length == 0) || (length > 50))
            break;
        for (int i = 0; i < length; ++i)
            cout << s[i];
        ++j;
    }
  
    return 0;
}
输出:

注意:上面的程序没有输出,因为它是失败的情况。

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。