From cppreference.com
Defined in header
template<class...Args>voidprintln(std::ostream&os,std::format_string<Args...>fmt,Args&&...args); (1)(since C++23)voidprintln(std::ostream&os); (2)(since C++26)Formats args according to the format string fmt with appended '\n' (which means that each output ends with a new-line), and inserts the result into os stream.
1) Equivalent to:
(os,"{}\n",std::format(os.getloc(),fmt,args...));
The behavior is undefined if std::formatter<Ti,char> does not meet the
requirements for any Ti in Args (as required by std::make_format_args).
Parameters
os - output stream to insert data into fmt - an object that represents the format string. The format string consists of ordinary characters (except { and }), which are copied unchanged to the output,
escape sequences {{ and }}, which are replaced with { and } respectively in the output, and
replacement fields.
Each replacement field has the following format:
{arg-id(optional)}(1) {arg-id(optional):format-spec}(2) 1) replacement field without a format specification
2) replacement field with a format specification
arg-id- specifies the index of the argument in args whose value is to be used for formatting; if it is omitted, the arguments are used in order. The arg-id s in a format string must all be present or all be omitted. Mixing manual and automatic indexing is an error.
format-spec- the format specification defined by the
specialization for the corresponding argument. Cannot start with }. For basic types and standard string types, the format specification is interpreted as
.
For chrono types, the format specification is interpreted as
.
For range types, the format specification is interpreted as
.
For
and
, the format specification is interpreted as
.
For
and
, see
thread id format specification
and
stacktrace entry format specification
.
For
, no format specifier is allowed.
(since C++23)For other formattable types, the format specification is determined by user-defined formatter specializations.
args... - arguments to be formatted Exceptions
on allocation failure.
Propagate any exception thrown by any
, e.g.
, without regard to the value of os.exceptions() and without turning on
in the error state of os.
May throw
caused by os.setstate(ios_base::badbit) which is called if an insertion into os fails.
Notes
Although overload (
) is added in C++26, all known implementations make it available in C++23 mode.
macro ValueStdFeature
(C++23)Formatted output
(C++23)Exposing std::basic_format_stringExample
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR Applied to Behavior as published Correct behavior
C++23 (
) ignored the locale imbued in os in formatting arguments such locale is used See also
(C++23)
outputs
representation of the arguments
(function template)
(C++23)
same as std::print except that each print is terminated by additional new line
(function template)
(C++20)
stores formatted representation of the arguments in a new string
(function template)