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


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


C++ 中的 c16rtomb() 函數將 16 位字符表示轉換為窄多字節字符表示。

c16rtomb() 函數在<cuchar> 頭文件中定義。

c16rtomb() 原型

size_t c16rtomb(char* s, char16_t c16, mbstate_t* ps);

c16rtomb() 函數將 utf-16 字符 c16 轉換為其多字節等效字符,並將其存儲在 s 指向的對象中。

如果s 表示一個空指針,則對於某些內部緩衝區 buf,該調用等效於 c16rtomb(buf, u'\0', ps)。

如果 c16 是空寬字符,即 u'\0',則存儲空字節。

參數:

  • s:指向要存儲多字節字符的字符數組的指針。
  • c16 :要轉換的 16 位字符。
  • ps :指向解釋多字節字符串時使用的 mbstate_t 對象的指針。

返回:

  • 成功時,c16rtomb() 函數返回寫入 s 指向的字符數組的字節數。
  • 失敗時,返回 -1 並EILSEQ存儲在errno中。

示例:c16rtomb() 函數如何工作?

#include <cuchar>
#include <iostream>
using namespace std;

int main()
{
	const char16_t str[] = u"Hello World!";
	char s[50];
	mbstate_t ps{};
	size_t length;
	int j = 0;

	while (str[j])
	{
		length = c16rtomb(s, str[j], &ps);
		if ((length == 0) || (length > 50))
			break;
		for (int i=0; i<length; ++i)
			cout << s[i];
		++j;
	}

	return 0;
}

運行程序時,輸出將是:

Hello World!

相關用法


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