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,  un-
       signed long long,
	  double,  long	double,	void*, and of all types	implicitly convertible
       to these	(such
	  as int or float) are supported. The standard formatting output oper-
       ators (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

Type requirements
	  -
	  OutputIt must	meet the requirements of LegacyOutputIterator.

Specializations
	  Two standalone (locale-independent)  full  specializations  and  two
       partial
	  specializations are provided by the standard library:

	  Defined in header <locale>
	  std::num_put<char>		   creates  narrow  string representa-
       tions of	numbers
	  std::num_put<wchar_t>		  creates wide string  representations
       of numbers
	  std::num_put<char,  OutputIt>	    creates  narrow string representa-
       tions of	numbers
					  using	custom output iterator
	  std::num_put<wchar_t,	OutputIt> creates wide string  representations
       of numbers using
					  custom output	iterator

	  In addition, every locale object constructed in a C++	program	imple-
       ments its own
	  (locale-specific) versions of	these specializations.

Member types
	  Member type Definition
	  char_type   CharT
	  iter_type   OutputIt

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

Protected member functions
	  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 <locale>
	#include <string>
	#include <iterator>

	int main()
	{
	    double n = 1234567.89;
	    std::cout.imbue(std::locale("de_DE"));
	    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';
	}

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

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

home | help