Localization library | |||||||||||||||||||||||||
Regular expressions library(C++11) | |||||||||||||||||||||||||
Formatting library(C++20) | |||||||||||||||||||||||||
Null-terminated sequence utilities | |||||||||||||||||||||||||
Byte strings | |||||||||||||||||||||||||
Multibyte strings | |||||||||||||||||||||||||
Wide strings | |||||||||||||||||||||||||
Primitive numeric conversions | |||||||||||||||||||||||||
| |||||||||||||||||||||||||
Text encoding identifications | |||||||||||||||||||||||||
|
Standard format specification | ||||
Formatting functions | ||||
(C++20) | ||||
format_to (C++20) | ||||
(C++20) | ||||
(C++20) | ||||
(C++20) | ||||
(C++20) | ||||
Format strings | ||||
(C++20)(C++20)(C++20) | ||||
(C++26) | ||||
Formatting concepts | ||||
(C++23) | ||||
Formatter | ||||
(C++20) | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++20)(C++20)(C++20) | ||||
(C++20)(C++20)(C++20) | ||||
(C++23) | ||||
(C++23) | ||||
Formatting arguments | ||||
(C++20) | ||||
(C++20) | ||||
(C++20)(C++20)(C++20) | ||||
(C++20)(deprecated in C++26) | ||||
(C++20)(C++20) | ||||
Format error | ||||
(C++20) |
Defined in header <format> | ||
template<class OutputIt,class...Args> OutputIt format_to( OutputIt out, | (1) | (since C++20) |
template<class OutputIt,class...Args> OutputIt format_to( OutputIt out, | (2) | (since C++20) |
template<class OutputIt,class...Args> OutputIt format_to( OutputIt out,conststd::locale& loc, | (3) | (since C++20) |
template<class OutputIt,class...Args> OutputIt format_to( OutputIt out,conststd::locale& loc, | (4) | (since C++20) |
Formatargs according to the format stringfmt, and write the result to the output iteratorout. If present,loc is used for locale-specific formatting.
Equivalent to:
LetCharT
bechar for overloads(1,3),wchar_t for overloads(2,4).
These overloads participate in overload resolution only ifOutputIt
satisfies the conceptstd::output_iterator<const CharT&>.
If any of the following conditions is satisfied, the behavior is undefined:
OutputIt
does not modelstd::output_iterator<const CharT&>.Ti
inArgs
.Contents |
out | - | iterator to the output buffer | ||||||||||||||||||||||||||||||||||||||||||||||
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 | ||||||||||||||||||||||||||||||||||||||||||||||
loc | - | std::locale used for locale-specific formatting |
Iterator past the end of the output range.
Propagates any exception thrown by formatter or iterator operations.
It is an error if the format string is not a constant expression unless it is initialized from the result ofstd::runtime_format
(since C++26).std::vformat_to does not have this requirement.
#include <format>#include <iostream>#include <iterator>#include <string> int main(){std::string buffer; std::format_to(std::back_inserter(buffer),// < OutputIt"Hello, C++{}!\n",// < fmt"20"// < arg);std::cout<< buffer; buffer.clear(); std::format_to(std::back_inserter(buffer),// < OutputIt"Hello, {0}::{1}!{2}",// < fmt"std",// < arg {0}"format_to()",// < arg {1}"\n",// < arg {2}"extra param(s)..."// < unused);std::cout<< buffer<<std::flush; std::wstring wbuffer; std::format_to(std::back_inserter(wbuffer),// < OutputIt L"Hello, {2}::{1}!{0}",// < fmt L"\n",// < arg {0} L"format_to()",// < arg {1} L"std",// < arg {2} L"...is not..."// < unused L"...an error!"// < unused);std::wcout<< wbuffer;}
Output:
Hello, C++20!Hello, std::format_to()!Hello, std::format_to()!
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 3539 | C++20 | out could not be a move-only iterator | it can be |
P2216R3 | C++20 | throwsstd::format_error for invalid format string | results in compile-time error instead |
P2418R2 | C++20 | objects that are neither const-usable nor copyable (such as generator-like objects) are not formattable | allow formatting these objects |
P2508R1 | C++20 | there's no user-visible name for this facility | the namebasic_format_string is exposed |
(C++20) | stores formatted representation of the arguments in a new string (function template)[edit] |
(C++20) | writes out formatted representation of its arguments through an output iterator, not exceeding specified size (function template)[edit] |