OutputIt format_to( OutputIt out,
OutputIt format_to( OutputIt out,
OutputIt format_to( OutputIt out, const std::locale& loc,
OutputIt format_to( OutputIt out, const std::locale& loc,
Format args according to the format string fmt, and write the result to the output iterator out. If present, loc is used for locale-specific formatting.
Equivalent to:
Let CharT
be char for overloads (1,3), wchar_t for overloads (2,4).
These overloads participate in overload resolution only if OutputIt
satisfies the concept std::output_iterator<const CharT&>.
If any of the following conditions is satisfied, the behavior is undefined:
OutputIt
does not model std::output_iterator<const CharT&>.Ti
in Args
.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 inargs
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 std::formatter specialization for the corresponding argument. Cannot start with }.formatter
specializations.Iterator past the end of the output range.
[edit] ExceptionsPropagates any exception thrown by formatter or iterator operations.
[edit] NotesIt is an error if the format string is not a constant expression unless it is initialized from the result of std::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()![edit] 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 3539 C++20 out could not be a move-only iterator it can be P2216R3 C++20 throws std::format_error for invalid format string results in compile-time error instead P2418R2 C++20 objects that are neither const-usable nor copyablebasic_format_string
is exposed [edit] See also stores formatted representation of the arguments in a new string
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4