std::print(3)
π std::print π
okay bestie, welcome to the C++ Standard Libary manual page for std::print β and yes, the NAME line says std::print twice, she's serving minimalism π. We're formatting args according to the format string fmt, then printing the result to an output stream. Let's get into it π«Ά
β¨ NAME β¨
std::print β std::print. iconic, brief, no notes π
πΈ Synopsis πΈ
Defined in header <print>
template< class... Args > (1)
(since C++23)
void print( std::format_string<Args...> fmt, Args&&... args );
template< class... Args >
void print( std::FILE* stream, (2)
(since C++23)
std::format_string<Args...> fmt, Args&&... args );
Format args according to the format string fmt, and print the result to an output stream. lowkey the whole plot β¨
- Equivalent to
std::print(stdout, fmt, std::forward<Args>(args)...). - If the ordinary literal encoding is UTF-8, equivalent to:
(std::enable_nonlocking_formatter_optimization<std::remove_cvref_t<Args>>
&& ...)
? std::vprint_unicode_locking(stream, fmt.str, make_format_args(args...))
: std::vprint_unicode(stream, fmt.str, make_format_args(args...));.
Otherwise, equivalent to:
(std::enable_nonlocking_formatter_optimization<std::remove_cvref_t<Args>>
&& ...)
? std::vprint_nonunicode_locking(stream, fmt.str, make_format_args(args...))
: std::vprint_nonunicode(stream, fmt.str, make_format_args(args...));.
The behavior is undefined ifstd::formatter<Ti, char>does not meet the BasicFormatter requirements for anyTiinArgs(as required bystd::make_format_args). bestie, that's a hard no π
π Parameters π
streamβ output file stream to write to.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.
- ordinary characters (except
Each replacement field has the following format:
{ arg-id (optional) } (1)
{ arg-id (optional) : format-spec } (2)
- replacement field without a format specification
- replacement field with a format specification
arg-idβ specifies the index of the argument inargswhose value is to be used for formatting; if it is omitted, the arguments are used in order. Thearg-ids 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 thestd::formatterspecialization for the corresponding argument. Cannot start with}.- For basic types and standard string types, the format specification is interpreted as standard format specification.
- For chrono types, the format specification is interpreted as chrono format specification.
- For range types, the format specification is interpreted as range format specification.
- For
std::pairandstd::tuple, the format specification is interpreted as tuple format specification. - For
std::thread::idandstd::stacktrace_entry, see(since C++23)thread id format specification and stacktrace entry format specification. - For
std::basic_stacktrace, no format specifier is allowed. - For
std::filesystem::path, see path format(since C++26)specification. - For other formattable types, the format specification is determined by user-defined formatter specializations.
args...β arguments to be formatted.
π Exceptions π
std::bad_allocon allocation failure.std::system_error, if writing to the stream fails.- Propagates any exception thrown by used formatters, e.g.
std::format_error.
π¦ Notes π¦
Feature-test macro tea β:
__cpp_lib_print202207Lβ(C++23)β Formatted output202403Lβ(C++26)β Formatted output with stream locking β(DR23)
__cpp_lib_format202207Lβ(C++23)β Exposingstd::basic_format_string
π Example π
// Run this code
#include <cstdio>
#include <filesystem>
#include <print>
int main()
{
std::print("{0} {2}{1}!\n", "Hello", 23, "C++"); // overload (2)
const auto tmp {std::filesystem::temp_directory_path() / "test.txt"};
if (std::FILE* stream{std::fopen(tmp.c_str(), "w")})
{
std::print(stream, "File: {}", tmp.string()); // overload (1)
std::fclose(stream);
}
}
Output:
Hello C++23!
π See also π
println(C++23)β same asstd::printexcept that each print is terminated by additional new line (function template).print(std::ostream)(C++23)β outputs formatted representation of the arguments (function template).format(C++20)β stores formatted representation of the arguments in a new string (function template).format_to(C++20)β writes out formatted representation of its arguments through an output iterator (function template).printf,fprintf,sprintf,snprintfβ prints formatted output to stdout, a file stream or a buffer (function);snprintfis(C++11).
π«Ά that's the whole vibe, bestie β source/version: cppreference.com, dated 2024.06.10. go format something iconic πβ¨
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms