当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ c16rtomb()用法及代码示例


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 <iostream> 
#include <uchar.h> 
#include <wchar.h> 
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 <iostream> 
#include <uchar.h> 
#include <wchar.h> 
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; 
}
输出:

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



相关用法


注:本文由纯净天空筛选整理自IshwarGupta大神的英文原创作品 c16rtomb() function in C/C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。