C/C++ 中的 mbsrtowcs() 函数
本文将讨论 C++ STL 中 std::mbsrtowcs() 函数的工作、语法和示例。
std::mbsrtowcs() 是什么?
std::mbsrtowcs() 函数是 C++ STL 中的一个内建函数,它在
语法
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ß水
广告