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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::num_put - std::num_put

Synopsis
	  Defined in header <locale>
	  template<

	      class CharT,
	      class OutputIt = std::ostreambuf_iterator<CharT>

	  > class num_put;

	  Class	 std::num_put  encapsulates  the  rules	for formatting numeric
       values as strings.
	  Specifically,	the types bool,	long, unsigned long
	  , long long, unsigned	long long
	  (since C++11), double, long double, void*, and of all	types  implic-
       itly convertible
	  to  these (such as int or float) are supported. The standard format-
       ting output
	  operators (such as cout << n;) use the std::num_put facet of the I/O
       stream's	locale
	  to generate text representation of numbers.

	  std-num put-inheritance.svg

					  Inheritance diagram

	  If a std::num_put specialization is not guaranteed to	be provided by
       the standard
	  library (see below), the behaviors of	its put() and do_put() are not
       guaranteed as
	  specified.

Specializations
	  The standard library is guaranteed to	provide	the following special-
       izations	(they
	  are required to be implemented by any	locale object):

	  Defined in header <locale>
	  std::num_put<char>	creates	narrow string representations of  num-
       bers
	  std::num_put<wchar_t>	creates	wide string representations of numbers

	  In  addition,	 the  standard	library	 is also guaranteed to provide
       every specialization
	  that satisfies the following type requirements:

	    * CharT is one of
		 * char,
		 * wchar_t, and
		 * any other implementation-defined character  container  type
       that meets the
		   requirements	 for  a	character on which any of the iostream
       components can be
		   instantiated; and
	    * OutputIt must meet the requirements of LegacyOutputIterator.

Member types
	  Member type Definition
	  char_type   CharT
	  iter_type   OutputIt

Member functions
	  constructor	constructs a new num_put facet
			(public	member function)
	  put		invokes	do_put
			(public	member function)

Protected member functions
	  destructor   destructs a num_put facet
		       (protected member function)
	  do_put       formats a number	and writes to output stream
	  [virtual]    (virtual	protected member function)

Member objects
	  static std::locale::id id id of the locale
				    (public member object)

Example
       // Run this code

	#include <iostream>
	#include <iterator>
	#include <locale>
	#include <string>

	int main()
	{
	    double n = 1234567.89;
	    std::cout.imbue(std::locale("de_DE.UTF-8"));
	    std::cout << "Direct conversion to string:\n"
		      << std::to_string(n) << '\n'
		      << "Output using a german	locale:\n"
		      << std::fixed << n << '\n'
		      << "Output using an american locale:\n";

	    // use the facet directly
	    std::cout.imbue(std::locale("en_US.UTF-8"));
	    auto& f = std::use_facet<std::num_put<char>>(std::cout.getloc());
	    f.put(std::ostreambuf_iterator<char>(std::cout), std::cout,	 '  ',
       n);
	    std::cout << '\n';
	}

Possible output:
	Direct conversion to string:
	1234567.890000
	Output using a german locale:
	1.234.567,890000
	Output using an	american locale:
	1,234,567.890000

	  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
			      num_put was guaranteed to	accept any only	 guar-
       antees to accept
			      CharT that			   char,
	  LWG 427  C++98      meets the	requirements for a	   wchar_t and
       other
			      character	on which		   implementa-
       tion-
			      any  of  the  iostream  components can   defined
       character types
			      be instantiated
								   can guaran-
       tee to accept
	  LWG 2392 C++98      only character type CharT	could be   implementa-
       tion-
			      guaranteed to be	accepted  by  num_put  defined
       character container
								   types

See also
	  numpunct   defines numeric punctuation rules
		     (class template)
	  num_get    parses numeric values from	an input character sequence
		     (class template)
	  to_string  converts an integral or floating-point value to string
	  (C++11)    (function)
	  to_wstring converts an integral or floating-point value to wstring
	  (C++11)    (function)

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

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

home | help