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 次浏览

开启你的 职业生涯

完成课程,获得认证

开始吧
广告