C / C ++中的mbsrtowcs()函数
在本文中,我们将讨论C++STL中std::mbsrtowcs()函数的工作,语法和示例。
什么是std::mbsrtowcs()?
std::mbsrtowcs()函数是C++STL中的内置函数,在<cwchar>头文件中定义。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ß水