std::println(std::ostream) - cppreference.com
From cppreference.com
| Defined in header |
||
|
(1) | (since C++23) |
|
(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:
std::print(os, "{}\n", std::format(os.getloc(), fmt, args...));
The behavior is undefined if std::formatter<Ti, char> does not meet the BasicFormatter 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
Each replacement field has the following format:
1) replacement field without a format specification 2) replacement field with a format specification
| ||||||||||||||||||||||||||||||||||||||||||||
| args... | - | arguments to be formatted | ||||||||||||||||||||||||||||||||||||||||||||
Exceptions
- std::bad_alloc on allocation failure.
- Propagate any exception thrown by any formatter, e.g. std::format_error, without regard to the value of
os.exceptions()and without turning on std::ios_base::badbit in the error state ofos. - May throw std::ios_base::failure caused by
os.setstate(ios_base::badbit)which is called if an insertion intoosfails.
Notes
Although overload (2) is added in C++26, all known implementations make it available in C++23 mode.
| Feature-test macro | Value | Std | Feature |
|---|---|---|---|
__cpp_lib_print |
202207L |
(C++23) | Formatted output |
__cpp_lib_format |
202207L |
(C++23) | Exposing std::basic_format_string |
Example
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 4088 | C++23 | (1) ignored the locale imbued in os in formatting arguments
|
such locale is used |
See also
| outputs formatted representation of the arguments (function template) [edit] | |
| same as std::print except that each print is terminated by additional new line (function template) [edit] | |
| stores formatted representation of the arguments in a new string (function template) [edit] |