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

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

Hàm mbrtowc () này được sử dụng để chuyển đổi chuỗi multibyte thành chuỗi ký tự rộng. Điều này trả về độ dài của các ký tự nhiều byte tính bằng byte. Cú pháp như dưới đây.

mbrtowc (wchar_t* wc, const char* s, size_t max, mbstate_t* ps)

Các đối số là -

  • wc là con trỏ trỏ nơi ký tự rộng kết quả sẽ được lưu trữ.
  • s là con trỏ đến chuỗi ký tự nhiều byte làm đầu vào
  • max là số byte tối đa tính bằng s, có thể được kiểm tra
  • ps đang trỏ đến trạng thái chuyển đổi, khi diễn giải chuỗi multibyte.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
void display(const char* s) {
   mbstate_t ps = mbstate_t(); // initial state
   int s_len = strlen(s);
   const char* n = s + s_len;
   int len;
   wchar_t wide_char;
   while ((len = mbrtowc(&wide_char, s, n - s, &ps)) > 0) {
      wcout << "The following " << len << " bytes are for the character " << wide_char << '\n';
      s += len;
   }
}
main() {
   setlocale(LC_ALL, "en_US.utf8");
   const char* str = u8"z\u00cf\u7c38\U00000915";
   display(str);
}

Đầu ra

The following 1 bytes are for the character z
The following 2 bytes are for the character Ï
The following 3 bytes are for the character 簸
The following 3 bytes are for the character क