當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。