C ++ wcsrtombs () - Thư viện chuẩn C ++

Hàm wcsrtombs () trong C ++ chuyển đổi chuỗi ký tự rộng thành chuỗi ký tự đa byte hẹp.

Hàm wcsrtombs () được định nghĩa trong tệp tiêu đề.

nguyên mẫu wcsrtombs ()

 size_t wcsrtombs (char * dest, const wchar_t ** src, size_t len, mbstate_t * ps);

Hàm wcsrtombs () chuyển đổi chuỗi ký tự rộng được đại diện bởi * src thành chuỗi ký tự multibyte tương ứng và được lưu trữ trong mảng ký tự được trỏ đến bởi hàm nếu đích không phải là null. Tối đa các ký tự len được ghi vào đích.

Quá trình chuyển đổi tương tự như gọi wcrtomb () lặp đi lặp lại. Việc chuyển đổi sẽ dừng nếu:

  • Một ký tự rỗng rộng đã được chuyển đổi và lưu trữ. Trong trường hợp này, src được đặt thành null và ps đại diện cho trạng thái dịch chuyển ban đầu.
  • Đã gặp phải một ký tự rộng không hợp lệ. Trong trường hợp này, src được đặt để trỏ đến đầu của ký tự rộng chưa được chuyển đổi đầu tiên.
  • byte len đã được lưu trữ trong đích. Trong trường hợp này, src được đặt để trỏ đến đầu của ký tự rộng chưa được chuyển đổi đầu tiên.

Tham số wcsrtombs ()

  • > dest: Con trỏ đến mảng ký tự nơi lưu trữ ký tự multibyte đã chuyển đổi.
  • src: Con trỏ để trỏ đến ký tự rộng đầu tiên cần chuyển đổi.
  • len: Số byte tối đa có sẵn trong mảng đích.
  • ps: Con trỏ đến đối tượng trạng thái chuyển đổi.

wcsrtombs () Giá trị trả về

  • Khi thành công, hàm wcsrtombs () trả về số lượng ký tự nhiềubyte được viết cho hàm hủy loại trừ ký tự rỗng rộng kết thúc nhưng bao gồm các chuỗi dịch chuyển.
    Nếu đích là một con trỏ null, nó sẽ trả về số lượng ký tự rộng đã được viết trừ ký tự null kết thúc.
  • Đối với lỗi chuyển đổi, -1 được trả về và errno được đặt thành EILSEQ .

Ví dụ: Hàm wcsrtombs () hoạt động như thế nào?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.utf8"); const wchar_t* wstr = L"u0763u0757u077fu075f"; char str(20); mbstate_t ps = mbstate_t(); int len = 10; int retVal; retVal = wcsrtombs(str, &wstr, len, &ps); cout << "Number of multibyte characters written (excluding "\0 ") = " << retVal << endl; cout << "Multibyte character = " << str << endl; return 0; )

Khi bạn chạy chương trình, đầu ra sẽ là:

 Số ký tự nhiều byte được viết (không bao gồm " 0") = 8 Ký tự nhiều byte = ݣݗݿݟ

thú vị bài viết...