C/C++ 中的 mbsrtowcs() 函式


本文將討論 C++ STL 中 std::mbsrtowcs() 函式的工作、語法和示例。

std::mbsrtowcs() 是什麼?

std::mbsrtowcs() 函式是 C++ STL 中的一個內建函式,它在 標頭檔案中進行定義。mbsrtowcs() 表示它將第一個位元組為 *src 的空終止多位元組字元轉換為其寬字元表示形式。此函式根據轉換的情況返回相應的值。

語法

size_t mbsrtowcs( wchar_t* pwc, char** str, size_t n, mbstate_t* ps);

引數

此函式接受以下引數:

  • pwc - 這是我們希望將輸出儲存到其中的位置的指標。
  • str - 作為輸入使用的字元。
  • n - 需要檢查的位元組數。
  • ps - 當解釋多位元組字串時,這是狀態物件指標。

返回值

根據下列條件,此函式返回的值有所不同:

  • 0 - 當 str 中需要轉換的字元為 NULL 時,此函式將返回零。
  • 1...n - 轉換並存儲在字串 *str 中的空結束字元的位元組數。
  • -1 − 當轉換時出現錯誤,errno 設定為 EILSEQ 時會獲得此結果。

示例

 動態演示

#include <bits/stdc++.h>
using namespace std;
int main(){
   setlocale(LC_ALL, "en_US.utf8");
   const char* ch = "\u0777\u0755";
   wchar_t arr[20];
   mbstate_t hold = mbstate_t();
   int highest = 10;
   int val = mbsrtowcs ( arr, &ch, highest, &hold );
   wcout << L"Wide characters are: "<< val << endl;
   wcout << L"Given Wide character is: " << arr << endl;
   return 0;
}

輸出

Wide characters are: 2
Given Wide character is: ݷݕ

示例

 動態演示

#include <bits/stdc++.h>
using namespace std;
int main() {
   setlocale(LC_ALL, "en_US.utf8");
   const char* ch = u8"z\u00df\u6c34";
   wchar_t arr[20];
   mbstate_t hold = mbstate_t();
   int highest = 10;
   int val = mbsrtowcs ( arr, &ch, highest, &hold );
   wcout << L"Total Wide characters are: "<< val << endl;
   wcout << L"Given Wide character is: " << arr << endl;
   return 0;
}

輸出

Total Wide characters are: 3
Given Wide character is: zß水


更新於: 17-Apr-2020

118 次瀏覽

開啟你的 職業生涯

完成課程,獲得認證

開始吧
廣告
© . All rights reserved.