Spec-Zone.ru › C++

std::println

Определено в заголовке <print>
template< class... Args >
void println( std::FILE* stream,
              std::format_string<Args...> fmt, Args&&... args );
(1) (с C++23)
template< class... Args >
void println( std::format_string<Args...> fmt, Args&&... args );
(2) (с C++23)

Форматирует args по строке формата fmt с добавленным '\n' (что означает, что каждый вывод заканчивается новой строкой) и выводит результат в поток.

1) Эквивалентно: std::print(stream, "{}\n", std::format(fmt, args...));
2) такое же, как (1), когда stream равно стандартному потоку вывода C stdout, т.е. std::println(stdout, fmt, args...);

Поведение не определено, если std::formatter<Ti, char> не удовлетворяет требованиям BasicFormatter для любого Ti в Args (как требуется std::make_format_args).

Параметры

stream - поток вывода файла для записи
fmt - объект, представляющий строку формата. Строка формата состоит из
  • обычных символов (кроме { и }), которые копируются в выходной поток без изменений,
  • последовательностей escape {{ и }}, которые соответственно заменяются на { и } в выходном потоке, и
  • полей замены.

Каждое поле замены имеет следующий формат:

{ arg-id (необязательно) } (1)
{ arg-id (необязательно) : format-spec } (2)
1) поле замены без указания формата 2) поле замены с указанием формата
arg-id - указывает индекс аргумента в args, значение которого используется для форматирования; если он опущен, аргументы используются в порядке.

Все arg-ids в строке формата должны быть присутствовать или все отсутствовать. Смешивание ручного и автоматического индексирования является ошибкой.

format-spec - спецификация формата, определенная специализацией std::formatter для соответствующего аргумента.
  • Для базовых типов и стандартных типов строк спецификация формата интерпретируется как стандартная спецификация формата.
  • Для типов chrono спецификация формата интерпретируется как спецификация формата chrono.
  • Для типов диапазонов спецификация формата интерпретируется как спецификация формата диапазона.
  • Для std::pair и std::tuple, спецификация формата интерпретируется как спецификация формата кортежа.
  • Для std::thread::id и std::stacktrace_entry, см. спецификацию формата идентификатора потока и спецификацию формата записи трассировки стека.
  • Для std::basic_stacktrace, спецификатор формата не допускается.
(с C++23)
  • Для других форматируемых типов спецификация формата определяется пользовательскими formatter специализациями.
args... - аргументы для форматирования

Возвращаемое значение

(нет)

Исключения

  • std::bad_alloc при ошибке выделения памяти.
  • std::system_error, если запись в поток завершается ошибкой.
  • Передает любое исключение, брошенное используемыми форматерами, например std::format_error.

Примечания

Макрос проверки наличия функции Значение Стандарт Функция
__cpp_lib_print 202207L (C++23) Форматированный вывод
__cpp_lib_format 202207L (C++23) Вызов std::basic_format_string

Пример

#include <print>
 
int main()
{
    // Each call to std::println ends with new-line
    std::println("Please");
    std::println("enter");
 
    std::print("pass");
    std::print("word");
 
    std::println(""); // same effect as std::print("\n");
}

Вывод:

Please
enter
password

См. также

print
(C++23)
печатает в stdout или поток файла, используя форматированное представление аргументов
(шаблон функции)
println(std::ostream)
(C++23)
выводит форматированное представление аргументов с добавленным '\n'
(шаблон функции)
format
(C++20)
сохраняет форматированное представление аргументов в новой строке
(шаблон функции)
printffprintfsprintfsnprintf
(C++11)
печатает форматированный вывод в stdout, поток файла или буфер
(функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/println

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API