Bài viết thảo luận hoạt động, cú pháp và ví dụ của std::mbsrtowcs() trong C++ STL.
std::mbsrtowcs() là gì?
Hàm nội tại C++ STL, định nghĩa trong
Cú pháp
size_t mbsrtowcs(wchar_t* pwc, char** str, size_t n, mbstate_t* ps);
Tham số
- pwc – con trỏ lưu kết quả.
- str – chuỗi đầu vào.
- n – số byte kiểm tra.
- ps – con trỏ trạng thái khi dịch multibyte.
Giá trị trả về
- 0 – ký tự cần chuyển là NULL.
- 1...n – số byte ký tự kết thúc null đã chuyển và lưu trong *str.
- -1 – lỗi chuyển đổi, errno = EILSEQ.
Ví dụ
#includeusing 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; }
Kết quả
Wide characters are: 2 Given Wide character is: ݷݕ
Ví dụ 2
#includeusing 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; }
Kết quả
Total Wide characters are: 3 Given Wide character is: zß水