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

Hàm vswprintf () trong C ++ được sử dụng để ghi một chuỗi rộng được định dạng vào bộ đệm chuỗi rộng.

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

nguyên mẫu vswprintf ()

 int vswprintf (wchar_t * buffer, size_t buf_size, const wchar_t * format, va_list vlist);

Hàm vswprintf () ghi chuỗi rộng được trỏ đến theo định dạng vào bộ đệm chuỗi rộng. Tối đa các (buf_size-1)ký tự rộng được ghi vào bộ đệm, theo sau là ký tự rộng rỗng.

Định dạng chuỗi rộng có thể chứa các chỉ định định dạng bắt đầu bằng% được thay thế bằng giá trị của các biến được chuyển dưới dạng vlist danh sách.

Tham số vswprintf ()

  • buffer: Con trỏ tới một vùng đệm chuỗi rộng để ghi kết quả.
  • buf_size: Số lượng ký tự rộng tối đa để viết bao gồm cả ký tự rộng rỗng kết thúc.
  • định dạng: Một con trỏ đến một chuỗi rộng kết thúc bằng null được ghi vào bộ đệm. Nó bao gồm các ký tự cùng với các ký hiệu định dạng tùy chọn bắt đầu bằng%. Các chỉ định định dạng được thay thế bằng các giá trị của các biến tương ứng tuân theo định dạng.
    Bộ định dạng có các phần sau:
    • Dấu% đứng đầu
    • Cờ: Tùy chọn một hoặc nhiều cờ sửa đổi hành vi chuyển đổi.
      • -: Căn trái cho kết quả trong trường. Theo mặc định, nó là đúng hợp lý.
      • +: Dấu kết quả được gắn vào đầu giá trị kể cả cho kết quả dương tính.
      • Dấu cách: Nếu không có dấu, dấu cách được gắn vào đầu kết quả.
      • #: Một hình thức chuyển đổi thay thế được thực hiện.
      • 0: Nó được sử dụng cho số nguyên và số dấu phẩy động. Các số không ở đầu được sử dụng để đệm các số thay vì khoảng trắng.
    • Chiều rộng: Một giá trị số nguyên hoặc * tùy chọn được sử dụng để chỉ định trường chiều rộng tối thiểu.
    • Độ chính xác: Một trường tùy chọn bao gồm a. theo sau là * hoặc số nguyên hoặc không có gì để chỉ định độ chính xác.
    • Chiều dài: Công cụ sửa đổi độ dài tùy chọn chỉ định kích thước của đối số.
    • Specifier: Một chỉ định định dạng chuyển đổi. Các thông số định dạng có sẵn như sau:
    Định dạng thông số
    Định dạng chỉ định Sự miêu tả
    % In%
    c Viết một ký tự
    S Viết một chuỗi ký tự
    d hoặc tôi Chuyển đổi một số nguyên có dấu thành biểu diễn thập phân
    o Chuyển đổi một số nguyên không dấu thành biểu diễn bát phân
    X hoặc x Chuyển đổi một số nguyên không dấu thành biểu diễn thập lục phân
    u Chuyển đổi một số nguyên không dấu thành biểu diễn thập phân
    F hoặc f Chuyển đổi số dấu phẩy động thành biểu diễn thập phân
    E hoặc e Chuyển đổi số dấu phẩy động thành ký hiệu số mũ thập phân
    A hoặc a Chuyển đổi số dấu phẩy động thành số mũ thập lục phân
    G hoặc g Chuyển đổi số dấu phẩy động thành ký hiệu số mũ thập phân hoặc thập phân
    n Trả về số ký tự được viết cho đến nay bởi lệnh gọi này cho hàm. Kết quả được ghi vào giá trị được trỏ tới bởi đối số
    p Viết một chuỗi ký tự được xác định triển khai xác định một con trỏ.

    Vì vậy, định dạng chung của trình định dạng là:
     % (flags) (width) (. precision) (length) specifier
  • vlist: Danh sách các đối số chứa dữ liệu cần ghi.

vswprintf () Giá trị trả về

  • Nếu thành công, hàm vswprintf () trả về số lượng ký tự rộng được viết ngoại trừ ký tự rộng rỗng kết thúc.
  • Giá trị âm được trả về nếu xảy ra bất kỳ lỗi mã hóa nào hoặc nếu số ký tự được tạo bằng hoặc lớn hơn buf_size.

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

 #include #include #include void write(wchar_t* buffer, size_t buf_size, const wchar_t *fmt,… ) ( va_list args; va_start(args, fmt); vswprintf(buffer, buf_size, fmt, args); va_end(args); ) int main () ( wchar_t str() = L"u0684 u06b1 u06aa u06a3 u0684"; wchar_t buffer(50); setlocale(LC_ALL, "en_US.UTF-8"); write(buffer, 50, L"Arabic Letters: %ls", str); wprintf(L"%ls", buffer); return 0; )

Khi bạn chạy chương trình, nội dung sau sẽ được ghi vào example.txt:

 Chữ cái Ả Rập: ڄ ڱ ڪ ڣ ڄ

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