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()用法及代碼示例
- C++ wcstold()用法及代碼示例
- C++ wctrans()用法及代碼示例
- C++ wcerr用法及代碼示例
- C++ wcsftime()用法及代碼示例
- C++ wcstod()用法及代碼示例
- C++ wcscspn()用法及代碼示例
- C++ wcsncmp()用法及代碼示例
- C++ wcin用法及代碼示例
- C++ wcstok()用法及代碼示例
- C++ wcsstr()用法及代碼示例
- C++ wcsrchr()用法及代碼示例
- C++ wctob()用法及代碼示例
- C++ wcsncpy()用法及代碼示例
- C++ wcslen()用法及代碼示例
- C++ wcsspn()用法及代碼示例
- C++ wclog用法及代碼示例
- C++ wcschr()用法及代碼示例
- C++ wctomb()用法及代碼示例
- C++ wcstof()用法及代碼示例
注:本文由純淨天空篩選整理自 C++ wcrtomb()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。