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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::format - std::format

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

	  std::string	     format(	   const       std::locale&	  loc,
       (3) (since C++20)

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

	  std::wstring	     format(	   const       std::locale&	  loc,
       (4) (since C++20)

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

	  Format  args	according to the format	string fmt, and	return the re-
       sult as a string.
	  If present, loc is used for locale-specific formatting.

	  1)  equivalent  to   return	std::vformat(fmt.str,	std::make_for-
       mat_args(args...));
	  2)   equivalent   to	return	std::vformat(fmt.str,  std::make_wfor-
       mat_args(args...));
	  3) equivalent	to return  std::vformat(loc,  fmt.str,	std::make_for-
       mat_args(args...));
	  4)  equivalent  to return std::vformat(loc, fmt.str, std::make_wfor-
       mat_args(args...));

	  The behavior is undefined if std::formatter<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),	 where	CharT  is  char	 for overloads
       (1,3), wchar_t for
	  overloads (2,4).

Parameters
		    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 string object holding the formatted	result.

Exceptions
	  Throws std::bad_alloc	on allocation failure. Also propagates	excep-
       tion thrown by any
	  formatter.

Notes
	  It  is not an	error to provide more arguments	than the format	string
       requires:

	std::format("{}	{}!", "Hello", "world",	"something"); // OK,  produces
       "Hello world!"

	  As of	P2216R3, it is an error	if the format string is	not a constant
       expression.
	  std::vformat can be used in this case.

	std::string f(std::string_view runtime_format_string) {
	    // return std::format(runtime_format_string, "foo",	"bar");	// er-
       ror
	    return	std::vformat(runtime_format_string,	std::make_for-
       mat_args("foo", "bar"));	// ok
	}

Example
       // Run this code

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

	template <typename... Args>
	std::string dyna_print(std::string_view	rt_fmt_str, Args&&... args) {
	    return std::vformat(rt_fmt_str, std::make_format_args(args...));
	}

	int main() {
	    std::cout << std::format("Hello {}!\n", "world");

	    std::string	fmt;
	    for	(int i{}; i != 3; ++i) {
		fmt += "{} "; // constructs the	formatting string
		std::cout << fmt << " :	";
		std::cout << dyna_print(fmt, "alpha", 'Z', 3.14, "unused");
		std::cout << '\n';
	    }
	}

Output:
	Hello world!
	{}  : alpha
	{} {}  : alpha Z
	{} {} {}  : alpha Z 3.14

	 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_to    writes  out  formatted  representation of its arguments
       through an output
	  (C++20)     iterator
		      (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(3)

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

home | help