C ++ vswprintf () - Стандартна бібліотека C ++

Функція vswprintf () в C ++ використовується для запису відформатованого широкого рядка в широкий буфер рядків.

Функція vswprintf () визначена у файлі заголовка.

прототип vswprintf ()

 int vswprintf (буфер wchar_t *, size_t buf_size, формат conchar wchar_t *, v_list vlist);

Функція vswprintf () записує широкий рядок, на який вказує формат, у широкий буфер рядків. У (buf_size-1)буфер записується максимум широких символів, за якими слідує нульовий широкий символ.

Формат широкого рядка може містити специфікатори формату, що починаються з%, які замінюються значеннями змінних, які передаються як список vlist.

Параметри vswprintf ()

  • буфер: вказівник на широкий буфер рядків для запису результату.
  • buf_size: Максимальна кількість широких символів для запису, включаючи закінчувальний нульовий широкий символ.
  • формат: вказівник на нульовий широкий рядок, який записується в буфер. Він складається з символів разом із необов’язковими специфікаторами формату, що починаються з%. Специфікатори формату замінюються значеннями відповідних змінних, що слідують за форматом.
    Специфікатор формату складається з таких частин:
    • Провідний знак%
    • Прапори: необов’язковий один або кілька прапорів, що змінює поведінку перетворення.
      • -: Ліворуч обґрунтуйте результат у полі. За замовчуванням це правильно виправдано.
      • +: Знак результату додається до початку значення, навіть для позитивних результатів.
      • Пробіл: Якщо знаку немає, пробіл приєднується до початку результату.
      • #: Виконується альтернативна форма перетворення.
      • 0: використовується для цілого числа та числа з плаваючою комою. Провідні нулі використовуються для заповнення цифр замість пробілу.
    • Ширина: необов’язкове * або ціле значення, що використовується для вказівки поля мінімальної ширини.
    • Точність: Необов’язкове поле, що складається з a. після чого * або ціле число, або нічого, щоб вказати точність.
    • Довжина: необов’язковий модифікатор довжини, який визначає розмір аргументу.
    • Специфікатор: специфікатор формату перетворення. Доступні специфікатори формату такі:
    Специфікатори формату
    Специфікатор формату Опис
    % Відбитків%
    c Пише одного персонажа
    s Записує рядок символів
    d або i Перетворює підписане ціле число в десяткове подання
    o Перетворює ціле число без знака у вісімкове представлення
    X або x Перетворює ціле число без знака в шістнадцяткове подання
    u Перетворює ціле число без знака в десяткове подання
    F або f Перетворює число з плаваючою точкою в десяткове подання
    Е або е Перетворює число з плаваючою комою в десятковий запис степеня
    A або a Перетворює число з плаваючою комою в шістнадцятковий показник
    G або g Перетворює число з плаваючою комою в десятковий або десятковий запис степеня
    п Повертає кількість символів, записаних дотепер цим викликом функції. Результат записується у значення, на яке вказує аргумент
    стор Пише послідовність символів реалізації, що визначає покажчик.

    Отже, загальним форматом специфікатора формату є:
     Специфікатор% (прапори) (ширина) (. точність) (довжина)
  • vlist: список аргументів, що містять дані для запису.

vswprintf () Повернене значення

  • У разі успіху функція vswprintf () повертає кількість широких символів, записаних за винятком закінчувального нульового широкого символу.
  • Від’ємне значення повертається, якщо виникає помилка кодування або якщо кількість символів, які потрібно створити, дорівнює або перевищує buf_size.

Приклад: Як працює функція vswprintf ()?

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

Коли ви запускаєте програму, у example.txt буде записано таке:

 Арабські літери: ڄ ڱ ڪ ڣ ڄ

Цікаві статті...