C++ 中的 mbrtoc32() 函數將窄多字節字符轉換為 32 位字符表示。
mbrtoc32() 函數在<cuchar> 頭文件中定義。
mbrtoc32() 原型
size_t mbrtoc32( char32_t* pc32, const char* s, size_t n, mbstate_t* ps);
mbrtoc32() 函數最多將 s
表示的 n
多字節字符轉換為其等效的 utf-32 字符,並將其存儲在 pc32
指向的內存位置。
如果 s
表示空指針,則 n
和 pc32
的值將被忽略,並且調用等效於 mbrtoc32(NULL, "", 1, ps)
。
如果生成的結果字符為空,則轉換狀態*ps
表示初始移位狀態。
參數:
pc32
:指向內存位置的指針,用於存儲生成的 32 位字符。s
:指向要轉換的多字節字符的指針。n
:要轉換的 s 中的最大字節數。ps
:指向解釋多字節字符串時使用的 mbstate_t 對象的指針。
返回:
mbrtoc32() 函數返回與以下情況匹配的以下值中的第一個:
- 如果轉換的字符是空字符,則為 0。
- 成功轉換為 32 位字符的多字節字符的字節數(最多
n
)。 - -3 如果來自 multi-char32_t 字符(例如代理對)的下一個
char32_t
現在已寫入*pc32
。在這種情況下,不會從輸入中處理任何字節。 - -2 如果下一個
n
字節構成不完整但到目前為止有效的多字節字符。在這種情況下,不會向*pc32
寫入任何內容。 - -1 如果發生編碼錯誤。在這種情況下,沒有寫入任何內容
*pc32
, errno 設置為EILSEQ和價值*ps
未指定。
示例: mbrtoc32() 函數如何工作?
#include <cstdio>
#include <cstdlib>
#include <cuchar>
#include <iostream>
using namespace std;
int main(void)
{
char32_t pc32;
char s[] = "x" ;
mbstate_t ps;
int length;
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 = x Length = 1 32-bit character = 0x00000078
相關用法
- C++ mbrtoc32()用法及代碼示例
- C++ mbrtoc16()用法及代碼示例
- C++ mbrtowc()用法及代碼示例
- C++ mbrlen()用法及代碼示例
- C++ mbtowc()用法及代碼示例
- C++ mbsinit()用法及代碼示例
- C++ mbstowcs()用法及代碼示例
- C++ mblen()用法及代碼示例
- C++ mbsrtowcs()用法及代碼示例
- C++ map lower_bound()用法及代碼示例
- C++ multimap key_comp()用法及代碼示例
- C++ merge()用法及代碼示例
- C++ multimap empty()用法及代碼示例
- C++ multimap cend()用法及代碼示例
- C++ multiset begin()、end()用法及代碼示例
- C++ map::at()用法及代碼示例
- C++ multiset value_comp()用法及代碼示例
- C++ multimap insert()用法及代碼示例
- C++ memset()用法及代碼示例
- C++ map max_size()用法及代碼示例
注:本文由純淨天空篩選整理自 C++ mbrtoc32()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。