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


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


C /C++中的mbsrtowcs()函数将窄的多字节字符序列转换为宽的字符序列。它将第一个由* src表示的第一个字节的多字节字符串转换为相应的宽字符表示,并存储在dest指向的宽字符数组中。最多可将len个宽字符写入dest。

用法:

size_t mbsrtowcs( wchar_t* dest, const char** src, size_t len, mbstate_t* ps )

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


  • dest :指定指向存储转换后的宽字符的数组的指针
  • ps :指定指向转换状态对象的指针
  • src :指定指向要转换的第一个多字节字符的指针
  • len :指定要存储的最大宽度字符

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

  • mbsrtowcs()函数返回成功写入到dest的宽字符数,但不包括终止的宽空字符。
  • 如果dest是空指针,则返回考虑到无限长度的宽字符数。
  • 发生转换错误时,返回-1并将errno设置为EILSEQ

注意:此函数将src指针移到转换后的多字节字符串的末尾。如果dst == NULL,则不会发生这种情况

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

// C++ program to illustrate  
// mbsrtowcs function 
#include <bits/stdc++.h> 
using namespace std; 
   
int main() 
{ 
    setlocale(LC_ALL, "en_US.utf8"); 
       
    // initializing the string 
    // narrow multibyte character sequence 
    const char* src = "\u0763\u0757"; 
    wchar_t dest[20]; 
       
    // initial state 
    mbstate_t ps = mbstate_t(); 
       
    // maximum number of wide character 
    int max = 10; 
       
    int retVal = mbsrtowcs ( dest, &src, max, &ps ); 
    wcout << L"Number of wide characters written = "
          << retVal << endl; 
     
    wcout << L"Wide character = " << dest << endl; 
       
    return 0; 
} 
输出:
Number of wide characters written = 2
Wide character = Ý£Ý?

示例2:

// C++ program to illustrate  
// mbsrtowcs function 
#include <bits/stdc++.h> 
using namespace std; 
   
int main() 
{ 
    // set locale 
    setlocale(LC_ALL, "en_US.utf8"); 
       
    // initializing the string 
    // narrow multibyte character sequence 
    const char* src = u8"z\u00df\u6c34\U0001f34c"; 
    wchar_t dest[20]; 
       
    // initial state 
    mbstate_t ps = mbstate_t(); 
       
    // maximum number of wide character 
    int max = 10; 
       
    int retVal = mbsrtowcs ( dest, &src, max, &ps ); 
    wcout << L"Number of wide characters written  = "
          << retVal << endl; 
     
    wcout << L"Wide character = " << dest << endl; 
       
    return 0; 
}
输出:
Number of wide characters written  = 4
Wide character = zÃ?æ°´ð??


相关用法


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