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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::format_to_n	- std::format_to_n

Synopsis
	  Defined in header <format>
	  template< class OutputIt, class... Args >

	  std::format_to_n_result<OutputIt>
       (1) (since C++20)
	  format_to_n( OutputIt	out, std::iter_difference_t<OutputIt> n,

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

	  std::format_to_n_result<OutputIt>
       (2) (since C++20)
	  format_to_n( OutputIt	out, std::iter_difference_t<OutputIt> n,

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

	  std::format_to_n_result<OutputIt>
	  format_to_n(	 OutputIt   out,  std::iter_difference_t<OutputIt>  n,
       (3) (since C++20)

	  const	std::locale& loc, /*format_string<Args...>*/ fmt, Args&&...
	  args );
	  template< class OutputIt, class... Args >

	  std::format_to_n_result<OutputIt>
	  format_to_n(	OutputIt  out,	 std::iter_difference_t<OutputIt>   n,
       (4) (since C++20)

	  const	std::locale& loc, /*wformat_string<Args...>*/ fmt, Args&&...
	  args );
	  template< class OutputIt >

	  struct format_to_n_result {
	  OutputIt							  out;
       (5) (since C++20)
	  std::iter_difference_t<OutputIt> size;

	  };

	  Format args according	to the format string fmt, and write the	result
       to the output
	  iterator out.	At most	n characters are written. If present,  loc  is
       used for
	  locale-specific formatting.

	  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::formatter<std::remove_cvref_t<Ti>, CharT> does not meet the Ba-
       sicFormatter
	  requirements for any Ti in Args.

	  5)  std::format_to_n_result  has  no	base classes, or members other
       than out, size and
	  implicitly declared special member functions.

Parameters
	  out	  - iterator to	the output buffer
	  n	  - maximum number of characters to be written to the 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
	  A format_to_n_result such that the out member	is  an	iterator  past
       the end of the
	  output  range, and the size member is	the total (not truncated) out-
       put size.

Exceptions
	  Propagates any exception thrown by formatter or iterator operations.

Example
       // Run this code

	#include <format>
	#include <iostream>
	#include <string_view>

	int main()
	{
	    char buffer[64];

	    const auto result =
		std::format_to_n(buffer, std::size(buffer) - 1,
				 "Hubble's H{2}	{3} {0}{4}{1} km/sec/Mpc.",
				 71,	   // {0}, occupies 2 bytes
				 8,	   // {1}, occupies 1 byte
				 "\u2080", // {2}, occupies 3 bytes
				 "\u2245", // {3}, occupies 3 bytes
				 "\u00B1"  // {4}, occupies 2 bytes
				 );
	    *result.out	= '\0';

	    const std::string_view str{buffer, result.out}; // uses C++20 ctor

	    std::cout << "Buffer: \"" << str <<	"\"\n"
		      << "Buffer size =	" << std::size(buffer) << '\n'
		      << "Untruncated output size = " << result.size <<	'\n';
	}

Output:
	Buffer:	"Hubble's H  718 km/sec/Mpc."
	Buffer size = 64
	Untruncated output size	= 35

	 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	  writes out formatted representation of its arguments
       through an
	  (C++20)	 output	iterator
			 (function template)
	  formatted_size determines the	 number	 of  characters	 necessary  to
       store the formatted
	  (C++20)	 representation	of its arguments
			 (function template)

http://cppreference.com		  2022.07.31		   std::format_to_n(3)

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

home | help