FreeBSD Manual Pages
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::ba- sic_regex object. (since C++11) Locale objects can also be used as predicates that perform string collation with the standard containers and algorithms and can be ac- cessed directly to obtain or modify the facets they hold. Each locale constructed in a C++ program holds at least the follow- ing standard facets (i.e. std::has_facet returns true for all these facet types), but a program may define additional specializations or completely new facets and add them to any existing locale object. Supported facets std::collate<char> std::codecvt<char, char, std::mbstate_t> std::collate<wchar_t> std::codecvt<wchar_t, char, std::mbstate_t> std::codecvt<char16_t, char8_t, std::mb- state_t> (since std::ctype<char> C++20) std::ctype<wchar_t> std::codecvt<char32_t, char8_t, std::mb- state_t> (since C++20) std::money_get<char> std::moneypunct<char> std::money_get<wchar_t> std::moneypunct<char, true> std::money_put<char> std::moneypunct<wchar_t> std::money_put<wchar_t> std::moneypunct<wchar_t, true> std::num_get<char> std::num_get<wchar_t> std::numpunct<char> std::num_put<char> std::numpunct<wchar_t> std::num_put<wchar_t> std::time_get<char> std::time_get<wchar_t> std::messages<char> std::time_put<char> std::messages<wchar_t> std::time_put<wchar_t> Deprecated facets std::codecvt<char16_t, char, std::mbstate_t> (since C++11)(depre- cated in C++20) std::codecvt<char32_t, char, std::mbstate_t> (since C++11)(depre- cated in C++20) 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 a 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) std::locale member functions expecting a category argument require one of the category values defined above, or the union of two or more such val- ues. The LC constants are not accepted. 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::locale("").name().c_str() << '\n'; // on startup, the global locale is the "C" locale std::wcout << 1000.01 << '\n'; // replace the C++ global locale and 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 Defect reports The following behavior-changing defect reports were applied retroac- tively to previously published C++ standards. DR Applied to Behavior as published Correct behavior LWG 340 C++98 the set of standard facets that all locales made clear need to hold was unclear LWG 347 C++98 parameters of type category could accept LC not accepted anymore constants 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 2024.06.10 std::locale(3)
NAME | Synopsis | Member types | Member objects | Member functions | Example | Possible output: | See also
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.1.quarterly>
