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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::locale - std::locale

Synopsis
	  Defined in header <locale>
	  class	locale;

	  An  object  of  class	std::locale is an immutable indexed set	of im-
       mutable facets. Each
	  stream object	of the C++ input/output	library	is associated with  an
       std::locale
	  object  and  uses its	facets for parsing and formatting of all data.
       In addition, a
	  locale object	is associated with each	std::basic_regex  object.  Lo-
       cale objects can
	  also	be  used  as predicates	that perform string collation with the
       standard
	  containers and algorithms and	can be accessed	directly to obtain  or
       modify the
	  facets they hold.

	  Each	locale constructed in a	C++ program holds at least the follow-
       ing standard
	  facets, but a	program	may define additional specializations or  com-
       pletely new facets
	  and add them to any existing locale object.

				       Supported facets
	  std::collate<char>			std::collate<wchar_t>
	  std::ctype<char>			std::ctype<wchar_t>
	  std::codecvt<char,char,mbstate_t>	std::codecvt<char32_t,char,mb-
       state_t>
	  std::codecvt<char16_t,char,mbstate_t>	 std::codecvt<wchar_t,char,mb-
       state_t>
	  std::moneypunct<char>			std::moneypunct<wchar_t>
	  std::moneypunct<char,true>		std::moneypunct<wchar_t,true>
	  std::money_get<char>			std::money_get<wchar_t>
	  std::money_put<char>			std::money_put<wchar_t>
	  std::numpunct<char>			std::numpunct<wchar_t>
	  std::num_get<char>			std::num_get<wchar_t>
	  std::num_put<char>			std::num_put<wchar_t>
	  std::time_get<char>			std::time_get<wchar_t>
	  std::time_put<char>			std::time_put<wchar_t>
	  std::messages<char>			std::messages<wchar_t>

	  Internally, a	locale object is implemented as-if it is a  reference-
       counted pointer
	  to an	array (indexed by std::locale::id) of reference-counted	point-
       ers to facets:
	  copying a locale only	copies one pointer and increments several ref-
       erence counts. To
	  maintain  the	 standard C++ library thread safety guarantees (opera-
       tions on	different
	  objects are always thread-safe), both	the locale reference count and
       each facet
	  reference count  are	updated	 in  thread-safe  manner,  similar  to
       std::shared_ptr.

Member types
		   the	facet index type: each facet class must	declare	or in-
       herit a public
	  id	   static member of this type
		   (class)
		   the base class for all facet	categories: each facet of  any
       category	is
	  facet	   derived from	this type
		   (class)
	  category int
		   (typedef)

Member objects
	  none	   a zero value	of type	category indicating no facet category
	  [static] (public static member constant)
	  collate   a  bitmask	value  of type category	indicating the collate
       facet category
	  [static] (public static member constant)
	  ctype	   a bitmask value of type category indicating the ctype facet
       category
	  [static] (public static member constant)
	  monetary a bitmask value of type category  indicating	 the  monetary
       facet category
	  [static] (public static member constant)
	  numeric   a  bitmask	value  of type category	indicating the numeric
       facet category
	  [static] (public static member constant)
	  time	   a bitmask value of type category indicating the time	 facet
       category
	  [static] (public static member constant)
	  messages  a  bitmask	value of type category indicating the messages
       facet category
	  [static] (public static member constant)
	  all	   collate | ctype | monetary |	numeric	| time | messages
	  [static] (public static member constant)

Member functions
	  constructor	     constructs	a new locale
			     (public member function)
			     destructs the locale and the facets whose	refer-
       ence count becomes
	  destructor	     zero
			     (public member function)
	  operator=	     replaces a	locale
			     (public member function)
			     constructs	 a locale with compile-time identified
       facet copied
	  combine	     from another locale
			     (public member function)
	  name		     returns the name of the locale or "*" if unnamed
			     (public member function)
	  operator==	     equality comparison between locale	objects
	  operator!=	     (public member function)
	  (removed in C++20)
			     lexicographically compares	two strings using this
       locale's
	  operator()	     collate facet
			     (public member function)
	  global	     changes the global	locale
	  [static]	     (public static member function)
	  classic	     obtains a reference to the	"C" locale
	  [static]	     (public static member function)

Example
	  Demonstrates the typical  prologue  of  a  locale-sensitive  program
       (cross-platform)

       // Run this code

	#include <iostream>
	#include <locale>

	int main()
	{
	    std::wcout	<<  "User-preferred  locale  setting  is " << std::lo-
       cale("").name().c_str() << '\n';
	    // on startup, the global locale is	the "C"	locale
	    std::wcout << 1000.01 << '\n';
	    // replace the C++ global locale as	well as	the C locale with  the
       user-preferred locale
	    std::locale::global(std::locale(""));
	    // use the new global locale for future wide character output
	    std::wcout.imbue(std::locale());
	    // output the same number again
	    std::wcout << 1000.01 << '\n';
	}

Possible output:
	User-preferred locale setting is en_US.UTF8
	1000.01
	1,000.01

See also
	  use_facet obtains a facet from a locale
		    (function template)
	  has_facet checks if a	locale implements a specific facet
		    (function template)
	  imbue	    sets locale
		    (public member function of std::ios_base)
	  getloc    returns current locale
		    (public member function of std::ios_base)

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

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

home | help