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


C++ c32rtomb()用法及代碼示例


c32rtomb()是C /C++中的內置函數,它將32位字符表示形式轉換為窄的多字節字符表示形式。它在C++的uchar.h頭文件中定義。

用法

size_t c32rtomb(char* s, char32_t c32, mbstate_t* p)

參數:該函數接受三個強製性參數,如下所示:


  • s:指定存儲多字節字符的字符串。
  • c16:指定要轉換的32位字符。
  • p:指定在解釋多字節字符串時使用的mbstate_t對象的指針。

返回值:該函數返回兩個值,如下所示:

  • 程序成功後,函數將返回寫入s指向的字符數組的字節數。
  • 如果失敗,則返回-1並將EILSEQ存儲在錯誤號no中。

程序1

// C++ program to illustrate the 
// c32rtomb () function on it's success 
#include <iostream> 
#include <uchar.h> 
#include <wchar.h> 
using namespace std; 
  
int main() 
{ 
    const char32_t str[] = U"GeeksforGeeks"; 
    char s[50]; 
    mbstate_t p{}; 
    size_t length; 
    int j = 0; 
  
    while (str[j]) { 
        // initializing the function 
        length = c32rtomb(s, str[j], &p); 
        if ((length == 0) || (length > 50)) 
            break; 
  
        for (int i = 0; i < length; ++i) 
            cout << s[i]; 
        ++j; 
    } 
  
    return 0; 
}
輸出:
GeeksforGeeks

程序2

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

注意:由於是失敗的情況,因此上述程序中沒有輸出。



相關用法


注:本文由純淨天空篩選整理自IshwarGupta大神的英文原創作品 c32rtomb() function in C/C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。