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


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

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 表示空指針,則 npc32 的值將被忽略,並且調用等效於 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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。