Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::format_to(3)	      C++ Standard Libary	     std::format_to(3)

NAME
       std::format_to -	std::format_to

Synopsis
	  Defined in header <format>
	  template< class OutputIt, class... Args >
	  OutputIt  format_to(	OutputIt out, std::format_string<Args...> fmt,
       (1) (since C++20)
	  Args&&... args );
	  template< class OutputIt, class... Args >
	  OutputIt  format_to(	OutputIt   out,	  std::wformat_string<Args...>
       (2) (since C++20)
	  fmt, Args&&... args );
	  template< class OutputIt, class... Args >

	  OutputIt   format_to(	  OutputIt   out,   const   std::locale&  loc,
       (3) (since C++20)

			      std::format_string<Args...> fmt, Args&&...
	  args );
	  template< class OutputIt, class... Args >

	  OutputIt  format_to(	 OutputIt   out,   const   std::locale&	  loc,
       (4) (since C++20)

			      std::wformat_string<Args...> fmt,	Args&&...
	  args );

	  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 format-
       ting.

	  1) equivalent	to return std::vformat_to(out, fmt.str,
	  std::make_format_args(args...));
	  2) equivalent	to return std::vformat_to(std::move(out), fmt.str,
	  std::make_wformat_args(args...));
	  3) equivalent	to return std::vformat_to(out, loc, fmt.str,
	  std::make_format_args(args...));
	  4)  equivalent  to   return	std::vformat_to(std::move(out),	  loc,
       fmt.str,
	  std::make_wformat_args(args...));

	  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&>.

	  The behavior is undefined if OutputIt	does not model (meet  the  se-
       mantic requirements
	  of)  the concept std::output_iterator<const CharT&>, or if std::for-
       matter<Ti, CharT>
	  does not meet	the BasicFormatter requirements	for any	Ti in Args (as
       required	by
	  std::make_format_args	and std::make_wformat_args).

Parameters
	  out	  - iterator to	the output buffer

		    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

				  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.
		    arg-id	-
				  The  arg-ids	in a format string must	all be
       present or all
				  be omitted. Mixing manual and	automatic  in-
       dexing is an
				  error.
	  fmt	   -		    the	 format	 specification	defined	by the
       std::formatter
		    format-spec	- specialization for the  corresponding	 argu-
       ment. 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	inter-
       preted as chrono
			format specification.

		      *	 For  range  types, the	format specification is	inter-
       preted
			as range format	specification.
		      *	For std::pair and std::tuple, the format specification
			is interpreted as tuple	format specification.
		      *	For  std::thread::id  and  std::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
	  loc	  - std::locale	used for locale-specific formatting

Return value
	  Iterator past	the end	of the output range.

Exceptions
	  Propagates any exception thrown by formatter or iterator operations.

Notes
	  As of	P2216R3, it is an error	if the format string is	not a constant
       expression.
	  std::vformat_to
	  or std::runtime_format
	  (since C++26)	can be used in this case.

Example
       // Run this code

	#include <format>
	#include <iostream>
	#include <iterator>
	#include <string>

	auto main() -> int
	{
	    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::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()!

	  Defect reports

	  The following	behavior-changing defect reports were applied retroac-
       tively to
	  previously published C++ standards.

	    DR	   Applied to	   Behavior as published	       Correct
       behavior
	  P2216R3 C++20	     throws std::format_error for      invalid	format
       string results in
			     invalid format string	      compile-time er-
       ror
			     objects that are neither
	  P2418R2 C++20	     const-usable nor copyable	      allow formatting
       these objects
			     (such as generator-like objects)
			     are not formattable
	  P2508R1  C++20       there's	no  user-visible name for the name ba-
       sic_format_string is
			     this facility		      exposed

See also
	  format      stores formatted representation of the  arguments	 in  a
       new string
	  (C++20)     (function	template)
	  format_to_n  writes  out  formatted  representation of its arguments
       through an output
	  (C++20)     iterator,	not exceeding specified	size
		      (function	template)

http://cppreference.com		  2024.06.10		     std::format_to(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::format_to&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help