Computer >> Máy Tính >  >> Lập trình >> lập trình C

hàm mbsrtowcs () trong C / C ++

Trong bài viết này, chúng ta sẽ thảo luận về cách làm việc, cú pháp và các ví dụ của hàm std ::mbsrtowcs () trong C ++ STL.

std ::mbsrtowcs () là gì?

Hàm std ::mbsrtowcs () là một hàm có sẵn trong C ++ STL, được định nghĩa trong tệp tiêu đề . mbsrtowcs () có nghĩa là nó chuyển đổi chuỗi ký tự multibyte kết thúc null có byte đầu tiên là * src thành biểu diễn ký tự rộng của nó. Hàm này trả về giá trị theo chuyển đổi.

Cú pháp

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

Tham số

Hàm chấp nhận (các) tham số sau -

  • pwc - Đây là con trỏ đến vị trí mà chúng ta muốn lưu trữ kết quả đầu ra.
  • str - Chuỗi ký tự được sử dụng làm đầu vào.
  • n - Đó là số byte cần được kiểm tra.
  • ps - Nó là con trỏ đến đối tượng trạng thái khi chúng ta đang diễn giải chuỗi multibyte.

Giá trị trả về

Giá trị trả về của hàm này khác nhau tùy theo điều kiện sau -

  • 0 - Hàm sẽ trả về 0 khi ký tự trong str phải được chuyển đổi là NULL.
  • 1… n− Số byte của các ký tự kết thúc bằng rỗng được chuyển đổi và lưu trữ trong chuỗi * str.
  • -1 - Chúng tôi nhận được thông báo này khi có lỗi trong khi chuyển đổi, lỗi được đặt thành EILSEQ.

Ví dụ

#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;
}

Đầu ra

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

Ví dụ

#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;
}

Đầu ra

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