Функція swprintf () в C ++ використовується для запису відформатованого широкого рядка в широкий буфер рядків.
Функція swprintf () визначена у файлі заголовка.
прототип swprintf ()
int swprintf (буфер wchar_t *, розмір_т, розмір const wchar_t *,…);
Функція swprintf () записує в буфер широкий рядок, на який вказує формат. Максимальна кількість символів, яку можна записати, є (розмір-1).
Після написання символів додається закінчувальний нульовий широкий символ.
Формат широкого рядка може містити специфікатори формату, що починаються з%, які замінюються значеннями змінних, які передаються функції swprintf () як додаткові аргументи.
swprintf () Параметри
- буфер: вказівник на рядок буфера для запису результату.
- size: Вкажіть максимальну кількість символів, які слід записати в буфер, який має розмір-1.
- формат: вказівник на широкий рядок із закінченням нуля, який записується в stdout. Він складається з широких символів разом із необов’язковими специфікаторами формату, що починаються з%. Специфікатори формату замінюються значеннями відповідних змінних, що слідують за форматом.
Специфікатор формату складається з таких частин:- Провідний знак%
- Прапори: необов’язковий один або кілька прапорів, що змінює поведінку перетворення.
- -: Ліворуч обґрунтуйте результат у полі. За замовчуванням це правильно виправдано.
- +: Знак результату додається до початку значення, навіть для позитивних результатів.
- Пробіл: Якщо знаку немає, пробіл приєднується до початку результату.
- #: Виконується альтернативна форма перетворення.
- 0: використовується для цілого числа та числа з плаваючою комою. Провідні нулі використовуються для заповнення цифр замість пробілу.
- Ширина: необов’язкове * або ціле значення, що використовується для вказівки поля мінімальної ширини.
- Точність: Необов’язкове поле, що складається з a. після чого * або ціле число, або нічого, щоб вказати точність.
- Довжина: необов’язковий модифікатор довжини, який визначає розмір аргументу.
- Специфікатор: специфікатор формату перетворення. Доступні специфікатори формату такі:
Специфікатор формату Опис % Відбитків% c Пише одного персонажа s Записує рядок символів d або i Перетворює підписане ціле число в десяткове подання o Перетворює ціле число без знака у вісімкове представлення X або x Перетворює ціле число без знака в шістнадцяткове подання u Перетворює ціле число без знака в десяткове подання F або f Перетворює число з плаваючою точкою в десяткове подання Е або е Перетворює число з плаваючою комою в десятковий запис степеня A або a Перетворює число з плаваючою комою в шістнадцятковий показник G або g Перетворює число з плаваючою комою в десятковий або десятковий запис степеня п Повертає кількість символів, записаних дотепер цим викликом функції. Результат записується у значення, на яке вказує аргумент стор Пише послідовність символів реалізації, що визначає покажчик.
Отже, загальним форматом специфікатора формату є:Специфікатор% (прапори) (ширина) (. точність) (довжина)
- …: Інші додаткові аргументи, що вказують дані, які потрібно записати. Вони відбуваються в послідовності відповідно до специфікатора формату.
swprintf () Повернене значення
- У разі успіху функція swprintf () повертає кількість символів, записаних за винятком закінчувального нульового символу.
- Якщо сталася помилка кодування або якщо кількість генерованих символів дорівнювала або перевищувала розмір, повертається негативне значення.
Приклад: Як працює функція swprintf ()?
#include #include #include #include using namespace std; int main() ( wchar_t hebrew_str() = L"u05D0 u05D1 u05E1 u05D3 u05EA"; wchar_t buffer(100); setlocale(LC_ALL, "en_US.UTF-8"); swprintf(buffer, sizeof(hebrew_str), L"%ls", hebrew_str); wcout << L"Some hebrew letters" << buffer << endl; return 0; )
Коли ви запускаєте програму, у example.txt буде записано таке:
Деякі єврейські літери א ב ס ד ת