Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

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


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 . mbsrtowcs = multibyte string to wide character string. Chuyển chuỗi multibyte kết thúc bằng null (byte đầu là *src) sang biểu diễn wide character. 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ố

  • 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ụ

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

Kết quả

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

Ví dụ 2

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

Kết quả

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