Пространства имён
Варианты
Действия

std::wprintf, std::fwprintf, std::swprintf

Материал из cppreference.com
< cpp‎ | io‎ | c


 
 
Библиотеки ввода / вывода
I / O манипуляторов
C-стиль I / O
Буферы
Оригинал:
Buffers
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
basic_streambuf
basic_filebuf
basic_stringbuf
strstreambuf(устарело)
Потоки
Оригинал:
Streams
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Абстракций
Оригинал:
Abstractions
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
ios_base
basic_ios
basic_istream
basic_ostream
basic_iostream
Файл I / O
Оригинал:
File I/O
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
basic_ifstream
basic_ofstream
basic_fstream
Струнный I / O
Оригинал:
String I/O
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
basic_istringstream
basic_ostringstream
basic_stringstream
Массив I / O
Оригинал:
Array I/O
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
istrstream(устарело)
ostrstream(устарело)
strstream(устарело)
Типы
Оригинал:
Types
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
streamoff
streamsize
fpos
Интерфейс Ошибка категории
Оригинал:
Error category interface
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
iostream_category(C++11)
io_errc(C++11)
 
C-стиль I / O
Функции
Оригинал:
Functions
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Доступ к файлам
Оригинал:
File access
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Прямой ввод / вывод
Оригинал:
Direct input/output
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
fread
fwrite
Неформатированная ввода / вывода
Оригинал:
Unformatted input/output
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Форматированный ввод / вывод
Оригинал:
Formatted input/output
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
wscanf
fwscanf
swscanf
vwscanf
vfwscanf
vswscanf
(C++11)
(C++11)
(C++11)
wprintf
fwprintf
swprintf
vwprintf
vfwprintf
vswprintf
Позиционирование файла
Оригинал:
File positioning
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
ftell
fgetpos
fseek
fsetpos
rewind
Обработка ошибок
Оригинал:
Error handling
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
clearerr
feof
ferror
perror
Операции с файлами
Оригинал:
Operations on files
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
remove
rename
tmpfile
tmpnam
 
Определено в заголовочном файле <cwchar>
int wprintf( const wchar_t* format, ... );
(1)
int fwprintf( std::FILE* stream, const wchar_t* format, ... );
(2)
int swprintf( wchar_t* buffer, std::size_t size, const wchar_t* format, ... );
(3)
Загружает данные из данного места, преобразует их в широком эквиваленты строку и записывает результаты в различных поглотителей.
Оригинал:
Loads the data from the given locations, converts them to wide string equivalents and writes the results to a variety of sinks.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
1)
Записывает результаты в stdout.
Оригинал:
Writes the results to stdout.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
2)
Записывает результаты в файл потока stream.
Оригинал:
Writes the results to a file stream stream.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
3)
Записывает результаты в широком buffer строку. В большинстве size-1 широких символов написаны. В результате строку широких символов будет завершен нулевой символ, если size равна нулю.
Оригинал:
Writes the results to a wide string buffer. At most size-1 wide characters are written. The resulting wide character string will be terminated with a null character, unless size is zero.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Содержание

[править] Параметры

stream - Поток выходного файла, в который будет записан результат.
buffer -
Указатель на строку широких символов для записи
Оригинал:
pointer to a wide character string to write to
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
size -
до size - 1 символы могут быть написаны, плюс нулевой символ
Оригинал:
up to size - 1 characters may be written, plus the null terminator
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
format -
Указатель на завершающуюся нулем строку, определяющую широкий, как интерпретировать эти данные.

Строка форматирования состоит из печатных и пробельных символов (кроме %), без изменения выводимых в выходной поток, и спецификаторов форматирования. Структура спецификатора:

  • символ-маркер %
  • (необязательно) один или несколько флагов, которые изменяют поведение форматирования:
  • -: выравнивание по левому краю внутри поля заданной ширины (по умолчанию по правому краю)
  • +: принудительная печать знака + с положительными значениями (по умолчанию знаком дополняются только отрицательные значения)
  • пробел: не дополненные знаком или отсутствующие численные значения дополняются слева пробелом. Игнорируется, если присутствует флаг +.
  • #: выполнится альтернативное форматирование. См. таблицу ниже для подробностей: если альтернативное форматирование не определено, поведение не определено (UB).
  • 0: при печати чисел в поле заданной ширины заполнение пустоты идёт нулями вместо пробелов. Для целых чисел флаг игнорируется, если задано количество выводимых знаков (точность). При печати не чисел вызывает неопределённое поведение (UB). Флаг игнорируется, если присутствует флаг -.
  • (необязательно) целое число, означающее минимальную ширину поля, или *. Свободное пространство в поле по умолчанию заполняется пробелами, выравнивание по правому краю. При использовании * ширина поля задаётся дополнительным аргументом типа int. Отрицательное значение ширины эквивалентно применению дополнительно флага -.
    (Замечание: задаётся минимальная ширина поля, форматируемое значение никогда не обрезается.)
  • (необязательно) . с целым числом, * или просто .. Число определяет точность. При использовании * точность задаётся дополнительным аргументом типа int. Просто . устанавливает нулевую точность. См. таблицу ниже для подробностей о действии точности на вывод.
  • (необязательно)модификатор размера: определяет размер аргумента
  • спецификатор формата вывода

Доступны следующие спецификаторы формата:

Спецификатор Описание Флаг размера
hh h (нет) l ll j z t L
% выводит символ %. Полный спецификатор формата %%. N/A N/A N/A N/A N/A N/A N/A N/A N/A
c
выводит символ

Аргумент сначала приводится к unsigned char. Если использован флаг l, аргумент сначала конвертируется в строку, как при использовании %ls с аргументом типа wchar_t[2].

N/A N/A
int
wint_t
N/A N/A N/A N/A N/A
s
выводит строку

Аргумент должен быть указателем на первый элемент массива символов. Точность определяет максимальное количество выведенных байт. Если точностьне задана, выводит всё до первого встреченного нулевого символа (не включая его). Если использован флаг l, аргумент должен быть указателем на первый элемент массива wchar_t, который преобразуется в массив char, как при вызове wcrtomb.

N/A N/A
char*
wchar_t*
N/A N/A N/A N/A N/A
d
i
форматирует знаковое целое как десятичное число в виде [-][0-9]*

Точность определяет минимальное количество выводимых знаков. По умолчанию 1.
Если форматированное значение и точность являются 0, ничего не выводится.

signed char
short
int
long
long long
intmax_t
signed size_t
ptrdiff_t
N/A
o
форматирует беззнаковое целое как восьмеричное число в виде [0-7]*

Точность определяет минимальное количество выводимых знаков. По умолчанию 1.
Если форматированное значение и точность являются 0, ничего не выводится.
Альтернативная реализация: при необходимости точность повышается, чтобы добавить ноль слева. Таким образом, если форматированное значение и точность являются 0, выводится 0.

unsigned char
unsigned short
unsigned int
unsigned long
unsigned long long
uintmax_t
size_t
unsigned version of ptrdiff_t
N/A
x
X
форматирует беззнаковое целое как шестнадцатеричное число в виде [0-F]*

Формат x использует буквы abcdef.
Формат X использует буквы ABCDEF.
Точность определяет минимальное количество выводимых знаков. По умолчанию 1.
Если форматированное значение и точность являются 0, ничего не выводится.
Альтернативная реализация: ненулевые значения выводятся с приставкой 0x или 0X соответственно.

N/A
u
форматирует беззнаковое целое как десятичное число в виде [0-9]*

Точность определяет минимальное количество выводимых знаков. По умолчанию 1.
Если форматированное значение и точность являются 0, ничего не выводится.

N/A
f
F
форматирует число с плавающей запятой в виде [-]d.d, где d - произвольные десятичные числа

Точность определяет минимальное количество выводимых знаков после запятой. По умолчанию 6.
Альтернативная реализация: выводит десятичную точку даже если число целое.
Форматирование бесконечности и NaN см. в примечаниях.

N/A N/A
double
double (начиная с C99)
N/A N/A N/A N/A
long double
e
E
форматирует число с плавающей запятой в экспоненициальной форме: AeB == A * pow (10, B)

Формат e использует букву e: AeB.
Формат E использует букву E: AEB.
Экспонента содержит не менее 2 цифр.
Точность определяет минимальное количество выводимых знаков после запятой. По умолчанию 6.
Альтернативная реализация: выводит десятичную точку даже если мантисса целая.
Форматирование бесконечности и NaN см. в примечаниях.

N/A N/A N/A N/A N/A N/A
a
A
форматирует число с плавающей запятой в шестнадцаеричной экспоненциальной форме

Формат a выводит [-]0xh.hhhp±d.
Формат A выводит [-]0Xh.hhhP±d.
Если число не нормализовано, первой цифрой выводится 0.
Если число 0, экпонента тоже 0.
Точность определяет минимальное количество выводимых знаков после запятой. По умолчанию выбирается значение, достаточное для полного вывода.
Альтернативная реализация: выводит десятичную точку даже если мантисса целая.
Форматирование бесконечности и NaN см. в примечаниях.

N/A N/A N/A N/A N/A N/A
g
G
форматирует число с плавающей запятой в десятичной или десятичной экспоненциальной форме в зависимости от значения и точности

Формат g выводит в формате e или f.
Формат A выводит в формате E или F.
Пусть P - параметр точности вывода. означает, что точность не задана, означает, что точность 0; в остальных случаях, если , точность равняется P. Если точность числа P, а экспонента при выводе в десятичном формате X, то:

  • Если P> X ≥ -4, используется формат f / F с точностью -1 - X.
  • Иначе используется формат e / E с точностью P - 1

Альтернативная реализация: выводит десятичную точку даже если мантисса целая; нули в конце не убираются.
Форматирование бесконечности и NaN см. в примечаниях.

N/A N/A N/A N/A N/A N/A
n
возвращает число символов, записанных данным вызовом функции к моменту %n.

Результат записывается в переменную, на которую указывает параметр. Данный спецификатор не допускает использования каких-либо флагов и модификаторов.

signed char*
short*
int*
long*
long long*
intmax_t*
size_t*
ptrdiff_t*
N/A
p
выводит указатель в зависящем от реализации виде.
N/A N/A void* N/A N/A N/A N/A N/A N/A

Формат чисел с плавающей запятой выводит бесконечность как inf или infinity в зависимости от реализации.

NaN преобразуется в nan или nan(char_sequence) в зависимости от реализации. Форматы F, E, G, A выводят INF, INFINITY, NAN.

Несмотря на то, что %c принимает параметр типа int, передавать char безопасно из-за преобразования к int при разборе аргументов форматирования.

Корректные преобразования для типов фиксированного размера (int8_t и прочих) объявлены в <cinttypes>(C++) или<inttypes.h> (C) (вызов PRIdMAX, PRIuMAX, и прочих соответствует %jd, %ju и т.д.).

Записывающий спецификатор %n - типичная цель для атак в случаях, когда строка формата зависит от пользовательского ввода. Не поддерживается семейством функций printf_s.

Каждый спецификатор формата происводит вычисление своего аргумента в момент печати. Это позволяет вызывать %n несколько раз и выводить результат действия предыдущего вызова %n в этом же вызове функции.

Неправильный спецификатор формата вызывает неопределённое поведение (UB).

Оригинал:
pointer to a null-terminated wide string specifying how to interpret the data.

Строка форматирования состоит из печатных и пробельных символов (кроме %), без изменения выводимых в выходной поток, и спецификаторов форматирования. Структура спецификатора:

  • символ-маркер %
  • (необязательно) один или несколько флагов, которые изменяют поведение форматирования:
  • -: выравнивание по левому краю внутри поля заданной ширины (по умолчанию по правому краю)
  • +: принудительная печать знака + с положительными значениями (по умолчанию знаком дополняются только отрицательные значения)
  • пробел: не дополненные знаком или отсутствующие численные значения дополняются слева пробелом. Игнорируется, если присутствует флаг +.
  • #: выполнится альтернативное форматирование. См. таблицу ниже для подробностей: если альтернативное форматирование не определено, поведение не определено (UB).
  • 0: при печати чисел в поле заданной ширины заполнение пустоты идёт нулями вместо пробелов. Для целых чисел флаг игнорируется, если задано количество выводимых знаков (точность). При печати не чисел вызывает неопределённое поведение (UB). Флаг игнорируется, если присутствует флаг -.
  • (необязательно) целое число, означающее минимальную ширину поля, или *. Свободное пространство в поле по умолчанию заполняется пробелами, выравнивание по правому краю. При использовании * ширина поля задаётся дополнительным аргументом типа int. Отрицательное значение ширины эквивалентно применению дополнительно флага -.
    (Замечание: задаётся минимальная ширина поля, форматируемое значение никогда не обрезается.)
  • (необязательно) . с целым числом, * или просто .. Число определяет точность. При использовании * точность задаётся дополнительным аргументом типа int. Просто . устанавливает нулевую точность. См. таблицу ниже для подробностей о действии точности на вывод.
  • (необязательно)модификатор размера: определяет размер аргумента
  • спецификатор формата вывода

Доступны следующие спецификаторы формата:

Спецификатор Описание Флаг размера
hh h (нет) l ll j z t L
% выводит символ %. Полный спецификатор формата %%. N/A N/A N/A N/A N/A N/A N/A N/A N/A
c
выводит символ

Аргумент сначала приводится к unsigned char. Если использован флаг l, аргумент сначала конвертируется в строку, как при использовании %ls с аргументом типа wchar_t[2].

N/A N/A
int
wint_t
N/A N/A N/A N/A N/A
s
выводит строку

Аргумент должен быть указателем на первый элемент массива символов. Точность определяет максимальное количество выведенных байт. Если точностьне задана, выводит всё до первого встреченного нулевого символа (не включая его). Если использован флаг l, аргумент должен быть указателем на первый элемент массива wchar_t, который преобразуется в массив char, как при вызове wcrtomb.

N/A N/A
char*
wchar_t*
N/A N/A N/A N/A N/A
d
i
форматирует знаковое целое как десятичное число в виде [-][0-9]*

Точность определяет минимальное количество выводимых знаков. По умолчанию 1.
Если форматированное значение и точность являются 0, ничего не выводится.

signed char
short
int
long
long long
intmax_t
signed size_t
ptrdiff_t
N/A
o
форматирует беззнаковое целое как восьмеричное число в виде [0-7]*

Точность определяет минимальное количество выводимых знаков. По умолчанию 1.
Если форматированное значение и точность являются 0, ничего не выводится.
Альтернативная реализация: при необходимости точность повышается, чтобы добавить ноль слева. Таким образом, если форматированное значение и точность являются 0, выводится 0.

unsigned char
unsigned short
unsigned int
unsigned long
unsigned long long
uintmax_t
size_t
unsigned version of ptrdiff_t
N/A
x
X
форматирует беззнаковое целое как шестнадцатеричное число в виде [0-F]*

Формат x использует буквы abcdef.
Формат X использует буквы ABCDEF.
Точность определяет минимальное количество выводимых знаков. По умолчанию 1.
Если форматированное значение и точность являются 0, ничего не выводится.
Альтернативная реализация: ненулевые значения выводятся с приставкой 0x или 0X соответственно.

N/A
u
форматирует беззнаковое целое как десятичное число в виде [0-9]*

Точность определяет минимальное количество выводимых знаков. По умолчанию 1.
Если форматированное значение и точность являются 0, ничего не выводится.

N/A
f
F
форматирует число с плавающей запятой в виде [-]d.d, где d - произвольные десятичные числа

Точность определяет минимальное количество выводимых знаков после запятой. По умолчанию 6.
Альтернативная реализация: выводит десятичную точку даже если число целое.
Форматирование бесконечности и NaN см. в примечаниях.

N/A N/A
double
double (начиная с C99)
N/A N/A N/A N/A
long double
e
E
форматирует число с плавающей запятой в экспоненициальной форме: AeB == A * pow (10, B)

Формат e использует букву e: AeB.
Формат E использует букву E: AEB.
Экспонента содержит не менее 2 цифр.
Точность определяет минимальное количество выводимых знаков после запятой. По умолчанию 6.
Альтернативная реализация: выводит десятичную точку даже если мантисса целая.
Форматирование бесконечности и NaN см. в примечаниях.

N/A N/A N/A N/A N/A N/A
a
A
форматирует число с плавающей запятой в шестнадцаеричной экспоненциальной форме

Формат a выводит [-]0xh.hhhp±d.
Формат A выводит [-]0Xh.hhhP±d.
Если число не нормализовано, первой цифрой выводится 0.
Если число 0, экпонента тоже 0.
Точность определяет минимальное количество выводимых знаков после запятой. По умолчанию выбирается значение, достаточное для полного вывода.
Альтернативная реализация: выводит десятичную точку даже если мантисса целая.
Форматирование бесконечности и NaN см. в примечаниях.

N/A N/A N/A N/A N/A N/A
g
G
форматирует число с плавающей запятой в десятичной или десятичной экспоненциальной форме в зависимости от значения и точности

Формат g выводит в формате e или f.
Формат A выводит в формате E или F.
Пусть P - параметр точности вывода. означает, что точность не задана, означает, что точность 0; в остальных случаях, если , точность равняется P. Если точность числа P, а экспонента при выводе в десятичном формате X, то:

  • Если P> X ≥ -4, используется формат f / F с точностью -1 - X.
  • Иначе используется формат e / E с точностью P - 1

Альтернативная реализация: выводит десятичную точку даже если мантисса целая; нули в конце не убираются.
Форматирование бесконечности и NaN см. в примечаниях.

N/A N/A N/A N/A N/A N/A
n
возвращает число символов, записанных данным вызовом функции к моменту %n.

Результат записывается в переменную, на которую указывает параметр. Данный спецификатор не допускает использования каких-либо флагов и модификаторов.

signed char*
short*
int*
long*
long long*
intmax_t*
size_t*
ptrdiff_t*
N/A
p
выводит указатель в зависящем от реализации виде.
N/A N/A void* N/A N/A N/A N/A N/A N/A

Формат чисел с плавающей запятой выводит бесконечность как inf или infinity в зависимости от реализации.

NaN преобразуется в nan или nan(char_sequence) в зависимости от реализации. Форматы F, E, G, A выводят INF, INFINITY, NAN.

Несмотря на то, что %c принимает параметр типа int, передавать char безопасно из-за преобразования к int при разборе аргументов форматирования.

Корректные преобразования для типов фиксированного размера (int8_t и прочих) объявлены в <cinttypes>(C++) или<inttypes.h> (C) (вызов PRIdMAX, PRIuMAX, и прочих соответствует %jd, %ju и т.д.).

Записывающий спецификатор %n - типичная цель для атак в случаях, когда строка формата зависит от пользовательского ввода. Не поддерживается семейством функций printf_s.

Каждый спецификатор формата происводит вычисление своего аргумента в момент печати. Это позволяет вызывать %n несколько раз и выводить результат действия предыдущего вызова %n в этом же вызове функции.

Неправильный спецификатор формата вызывает неопределённое поведение (UB).

Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
... -
аргументы, определяющие данные для печати
Оригинал:
arguments specifying data to print
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Возвращаемое значение

Количество широких символов, написанных в случае успеха (не считая завершающего нулевого символа) или отрицательное значение, если произошла ошибка.
Оригинал:
Number of wide characters written if successful (not counting the terminating null character) or negative value if an error occurred.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Пример

[править] См. также

отпечатки отформатирован широкий выход характера stdout, stream
файл или буфер, используя переменный список аргументов
Оригинал:
prints formatted wide character output to stdout, a file stream
or a buffer using variable argument list
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
пишет широкого строку в файл поток
Оригинал:
writes a wide string to a file stream
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [править]
Справка по Cwprintf, fwprintf, swprintf