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


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


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

用法

size_t mbrtoc32( char32_t* pc32, const char* s, size_t n, mbstate_t* ps);

参数:该函数接受四个强制性参数,如下所述:


  • s:指定要转换的多字节字符。
  • pc32:指定存储位置以存储结果的32位字符。
  • n:指定s中要转换的最大字节数。
  • ps:指定在解释多字节字符串时使用的mbstate_t对象。

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

  • 如果转换后的字符为空字符,则为0。
  • 成功转换为32位字符的多字节字符的字节数(最多n个)。
  • 如果来自multi-char32_t字符(例如代理对)的下一个char16_t现在已写入* pc32,则为-3。在这种情况下,不会从输入中处理任何字节。
  • -2,如果接下来的n个字节构成一个不完整但到目前为止有效的多字节字符。在这种情况下,不会将任何内容写入* pc32。
  • 如果发生编码错误,则为-1。在这种情况下,不会将任何内容写入* pc32,将errno设置为EILSEQ,并且未指定* ps的值。

以下示例程序旨在说明上述函数。
程序1

// C++ program to illustrate the 
// mbrtoc32() function 
#include <cstdio> 
#include <cstdlib> 
#include <iostream> 
#include <uchar.h> 
#include <wchar.h> 
using namespace std; 
  
int main(void) 
{ 
    char32_t pc32; 
    char s[] = "S"; 
    mbstate_t ps{}; 
    int length; 
  
    // initializing the function 
    length = mbrtoc32(&pc32, s, MB_CUR_MAX, &ps); 
  
    if (length < 0) { 
        perror("mbrtoc32() fails to convert"); 
        exit(-1); 
    } 
  
    cout << "Multibyte string = " << s << endl; 
    cout << "Length = " << length << endl; 
    printf("32-bit character = 0x%04hx\n", pc32); 
    return 0; 
}
输出:
Multibyte string = S
Length = 1
32-bit character = 0x0053

程序2

// C++ program to illustrate the 
// mbrtoc32() function 
#include <cstdio> 
#include <cstdlib> 
#include <iostream> 
#include <uchar.h> 
#include <wchar.h> 
using namespace std; 
  
int main(void) 
{ 
    char32_t pc32; 
    char s[] = "S"; 
    mbstate_t ps{}; 
    int length; 
  
    // initializing the function 
    length = mbrtoc32(&pc32, s, MB_CUR_MAX, &ps); 
  
    if (length < 0) { 
        perror("mbrtoc32() fails to convert"); 
        exit(-1); 
    } 
  
    cout << "Multibyte string = " << s << endl; 
    cout << "Length = " << length << endl; 
    printf("32-bit character = 0x%08hx\n", pc32); 
    return 0; 
}
输出:
Multibyte string = S
Length = 1
32-bit character = 0x00000053


相关用法


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