C++ 中的wcsrtombs() 函數將寬字符序列轉換為窄多字節字符序列。
wcsrtombs() 函數在<cwchar> 頭文件中定義。
wcsrtombs()原型
size_t wcsrtombs( char* dest, const wchar_t** src, size_t len, mbstate_t* ps );
wcsrtombs()函數將*src
表示的寬字符串轉換為對應的多字節字符串,如果dest
不為空,則存儲在dest
指向的字符數組中。最多將 len
字符寫入 dest
。
轉換過程類似於重複調用wcrtomb()。如果出現以下情況,轉換將停止:
- 轉換並存儲了一個寬空字符。在這種情況下,
src
設置為空,ps
表示初始移位狀態。 - 遇到無效的寬字符。在這種情況下,
src
設置為指向第一個未轉換的寬字符的開頭。 len
字節已存儲在dest
中。在這種情況下,src
設置為指向第一個未轉換的寬字符的開頭。
參數:
- >dest:指向存儲轉換後的多字節字符的字符數組的指針。
src
:指向要轉換的第一個寬字符的指針。len
:dest 數組中可用的最大字節數。ps
:指向轉換狀態對象的指針。
返回:
- 成功時,wcsrtombs() 函數返回寫入 dest 的多字節字符數,不包括終止寬空字符,但包括移位序列。
如果 dest 是一個空指針,它返回將被寫入的寬字符數,不包括終止空字符。 - 轉換錯誤時,返回 -1 並將 errno 設置為EILSEQ.
示例:wcsrtombs() 函數如何工作?
#include <cwchar>
#include <clocale>
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "en_US.utf8");
const wchar_t* wstr = L"\u0763\u0757\u077f\u075f";
char str[20];
mbstate_t ps = mbstate_t();
int len = 10;
int retVal;
retVal = wcsrtombs(str, &wstr, len, &ps);
cout << "Number of multibyte characters written (excluding \"\\0\") = " << retVal << endl;
cout << "Multibyte character = " << str << endl;
return 0;
}
運行程序時,輸出將是:
Number of multibyte characters written (excluding "\0") = 8 Multibyte character = ݣݗݿݟ
相關用法
- C++ wcsrtombs()用法及代碼示例
- C++ wcsrchr()用法及代碼示例
- C++ wcstold()用法及代碼示例
- C++ wcsftime()用法及代碼示例
- C++ wcstod()用法及代碼示例
- C++ wcscspn()用法及代碼示例
- C++ wcsncmp()用法及代碼示例
- C++ wcstok()用法及代碼示例
- C++ wcsstr()用法及代碼示例
- C++ wcsncpy()用法及代碼示例
- C++ wcslen()用法及代碼示例
- C++ wcsspn()用法及代碼示例
- C++ wcschr()用法及代碼示例
- C++ wcstof()用法及代碼示例
- C++ wcstol()用法及代碼示例
- C++ wcspbrk()用法及代碼示例
- C++ wcscat()用法及代碼示例
- C++ wcscoll()用法及代碼示例
- C++ wcsncat()用法及代碼示例
- C++ wcscpy()用法及代碼示例
注:本文由純淨天空篩選整理自 C++ wcsrtombs()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。