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


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

C++ 中的wcrtomb() 函數將寬字符轉換為其窄多字節表示。

wcrtomb() 在<cwchar> 頭文件中定義。

wcrtomb()原型

size_t wcrtomb( char* s, wchar_t wc, mbstate_t* ps );

wcrtomb() 函數將 wc 表示的寬字符轉換為窄多字節字符,並存儲在 s 指向的地址中。

  • 如果s不是空指針,wcrtomb() 函數確定存儲多字節表示所需的最大字節數wc並將其存儲在指向的內存位置s.最多MB_CUR_MAX可以寫入字節。的價值ps根據需要更新。
  • 如果s 是空指針,則對於某些內部緩衝區buf,調用等效於wcrtomb(buf, L'\0', ps)
  • 如果 wc == L'\0' ,則存儲一個空字節。

參數:

  • s:指向多字節字符數組的指針以存儲結果。
  • wc:要轉換的寬字符。
  • ps:指向解釋多字節字符串時使用的轉換狀態的指針

返回:

  • 成功時,wcrtomb() 函數返回寫入第一個元素由 s 指向的字符數組的字節數。
  • 失敗時(即 wc 不是有效的寬字符),它返回 -1,errno 設置為EILSEQ並使 *ps 處於未指定狀態。

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

#include <cwchar>
#include <clocale>
#include <iostream>
using namespace std;

int main()
{
	setlocale(LC_ALL, "en_US.utf8");
	
	wchar_t str[] = L"u\u00c6\u00f5\u01b5";
	char s[16];
	int retVal;
	
	mbstate_t ps = mbstate_t();
	for (int i=0; i<wcslen(str); i++)
	{
		retVal = wcrtomb(s, str[i], &ps);
		if (retVal!=-1)
		cout << "Size of " << s << " is " << retVal << " bytes" << endl;
		else
		cout << "Invalid wide character" << endl;
	}
	
	return 0;
}

運行程序時,輸出將是:

Size of u is 1 bytes
Size of Æ is 2 bytes
Size of õ is 2 bytes
Size of Ƶ is 2 bytes

相關用法


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