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

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

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

vswprintf () прототип

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

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

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

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

  • buffer: указатель на широкий строковый буфер для записи результата.
  • buf_size: максимальное количество широких символов для записи, включая завершающий нулевой широкий символ.
  • формат: указатель на широкую строку с завершающим нулем, которая записывается в буфер. Он состоит из символов и дополнительных спецификаторов формата, начинающихся с%. Спецификаторы формата заменяются значениями соответствующих переменных, следующих за форматом.
    Спецификатор формата состоит из следующих частей:
    • Ведущий знак%
    • Флаги: необязательный один или несколько флагов, которые изменяют поведение преобразования.
      • -: Выровнять результат по левому краю внутри поля. По умолчанию выравнивается по правому краю.
      • +: Знак результата прикрепляется к началу значения даже для положительных результатов.
      • Пробел: при отсутствии знака ставится пробел в начале результата.
      • #: Выполняется альтернативная форма преобразования.
      • 0: используется для целых чисел и чисел с плавающей запятой. Для дополнения чисел вместо пробела используются ведущие нули.
    • Ширина: необязательное * или целочисленное значение, используемое для указания поля минимальной ширины.
    • Точность: необязательное поле, состоящее из. за которым следует *, целое число или ничего, чтобы указать точность.
    • Длина: необязательный модификатор длины, указывающий размер аргумента.
    • Спецификатор: спецификатор формата преобразования. Доступные спецификаторы формата следующие:
    Спецификаторы формата
    Описатель формата Описание
    % Печать%
    c Записывает одиночный символ
    s Записывает символьную строку
    д или я Преобразует целое число со знаком в десятичное представление
    о Преобразует целое число без знака в восьмеричное представление
    X или x Преобразует целое число без знака в шестнадцатеричное представление.
    ты Преобразует целое число без знака в десятичное представление
    F или F Преобразует число с плавающей запятой в десятичное представление
    E или e Преобразует число с плавающей запятой в представление десятичной степени
    А или а Преобразует число с плавающей запятой в шестнадцатеричную экспоненту
    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 будет записано следующее:

 Арабские буквы: ڄ ڱ ڪ ڣ ڄ

Интересные статьи...