Функция swprintf () в C ++ используется для записи отформатированной широкой строки в широкий строковый буфер.
Функция swprintf () определена в заголовочном файле.
swprintf () прототип
int swprintf (wchar_t * буфер, размер size_t, const wchar_t * формат,…);
Функция swprintf () записывает широкую строку, на которую указывает format, в буфер. Максимальное количество символов, которое можно написать: (размер-1).
После того, как символы записаны, добавляется завершающий нулевой широкий символ.
Формат широкой строки может содержать спецификаторы формата, начинающиеся с%, которые заменяются значениями переменных, которые передаются в функцию swprintf () в качестве дополнительных аргументов.
swprintf () Параметры
- buffer: указатель на строковый буфер для записи результата.
- size: укажите максимальное количество символов для записи в буфер размером-1.
- формат: указатель на широкую строку с завершающим нулем, которая записывается в стандартный вывод. Он состоит из широких символов и необязательных спецификаторов формата, начинающихся с%. Спецификаторы формата заменяются значениями соответствующих переменных, следующих за форматом.
Спецификатор формата состоит из следующих частей:- Ведущий знак%
- Флаги: необязательный один или несколько флагов, которые изменяют поведение преобразования.
- -: Выровнять результат по левому краю внутри поля. По умолчанию выравнивается по правому краю.
- +: Знак результата прикрепляется к началу значения даже для положительных результатов.
- Пробел: при отсутствии знака ставится пробел в начале результата.
- #: Выполняется альтернативная форма преобразования.
- 0: используется для целых чисел и чисел с плавающей запятой. Для дополнения чисел вместо пробела используются ведущие нули.
- Ширина: необязательное * или целочисленное значение, используемое для указания поля минимальной ширины.
- Точность: необязательное поле, состоящее из. за которым следует *, целое число или ничего, чтобы указать точность.
- Длина: необязательный модификатор длины, указывающий размер аргумента.
- Спецификатор: спецификатор формата преобразования. Доступные спецификаторы формата следующие:
Описатель формата Описание % Печать% c Записывает одиночный символ s Записывает символьную строку д или я Преобразует целое число со знаком в десятичное представление о Преобразует целое число без знака в восьмеричное представление X или x Преобразует целое число без знака в шестнадцатеричное представление. ты Преобразует целое число без знака в десятичное представление F или F Преобразует число с плавающей запятой в десятичное представление E или e Преобразует число с плавающей запятой в представление десятичной степени А или а Преобразует число с плавающей запятой в шестнадцатеричную экспоненту 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 будет записано следующее:
Некоторые буквы на иврите א ב ס ד ת