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, /*format_string<Args...>*/ fmt,
       (1) (since C++20)
	  Args&&... args );
	  template< class OutputIt, class... Args >
	  OutputIt format_to( OutputIt out,  /*wformat_string<Args...>*/  fmt,
       (2) (since C++20)
	  Args&&... args );
	  template< class OutputIt, class... Args >

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

	  /*format_string<Args...>*/ fmt, Args&&... args );
	  template< class OutputIt, class... Args >

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

	  /*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
		    parameter of unspecified  type,  whose  initialization  is
       valid only if the
		    argument is	convertible to std::string_view	(for (1,3)) or
		    std::wstring_view  (for  (2,4)), and the result of conver-
       sion is a constant
		    expression and a valid format string for Args. 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)

	  fmt	  - 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
		    arg-id	- are used in order.

				  The  arg-ids	in a format string must	all be
       present or all be
				  omitted. Mixing manual and automatic	index-
       ing is an error.
		    format-spec	 -  the	 format	 specification	defined	by the
       std::formatter
				  specialization for the  corresponding	 argu-
       ment.

		      *	 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 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 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		  Cor-
       rect behavior
			     throws std::format_error for invalid      invalid
       format string
	  P2216R3 C++20	     format string			       results
       in compile-time
								       error
			     objects that are neither const-usable nor
	  P2418R2 C++20	      copyable					 allow
       formatting these
			     (such as generator-like objects) are not  objects
			     formattable

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		  2022.07.31		     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.0>

home | help