locale() throw();
(until C++11)locale() noexcept;
(since C++11) (2)locale( const locale& other ) throw();
(until C++11)locale( const locale& other ) noexcept;
(since C++11)explicit locale( const char* std_name );
(3) (4) (since C++11)locale( const locale& other, const char* std_name, category cats );
(5) locale( const locale& other, const std::string& std_name, category cats ); (6) (since C++11)template< class Facet >
locale( const locale& other, Facet* f );
locale( const locale& other, const locale& one, category cats );
(8)Constructs a new locale object.
2) Copy constructor. Constructs a copy of other.
3,4) Constructs a copy of the system locale with specified std_name (such as "C", or "POSIX", or "en_US.UTF-8", or "English_US.1251"), if such locale is supported by the operating system. The locale constructed in this manner has a name.
4) Equivalent to locale(std_name.c_str()).
5) Constructs a copy of other except for all the facets identified by the cats argument, which are copied from the system locale identified by its std_name. The locale constructed in this manner has a name if and only if other has a name.
6) Equivalent to locale(other, std_name.c_str(), cats).
7)Constructs a copy of
otherexcept for the facet of type
Facet
(typically deduced from the type of the argument) which is installed from
f. If
fis a null pointer, the constructed locale is a full copy of
other. The program is ill-formed if
Facet
is not a
facetor it is a volatile-qualified facet.
If f is null, the constructed locale has the same name as other. Otherwise, the constructed locale has no name.
8) Constructs a copy of other except for all the facets identified by the cats argument, which are copied from one.
If cats is equal to locale::none
, the constructed locale has a name if and only if other has a name. Otherwise, the constructed locale has a name if and only if other and one both have names.
if the operating system has no locale named
std_nameor if
std_nameis a null pointer.
[edit] NotesOverload (7) is typically called with its second argument, f, obtained directly from a new-expression: the locale is responsible for calling the matching delete from its own destructor.
[edit] Example#include <codecvt> #include <iostream> #include <locale> std::ostream& operator<< (std::ostream& os, const std::locale& loc) { if (loc.name().length() <= 80) os << loc.name(); else for (const auto c : loc.name()) os << c << (c == ';' ? "\n " : ""); return os << '\n'; } int main() { std::locale l1; std::cout << "Name of a copy of the classic \"C\" locale: " << l1; std::locale l2("en_US.UTF-8"); std::cout << "Name of unicode locale: " << l2; std::locale l3(l1, new std::codecvt_utf8<wchar_t>); std::cout << "Name of \"C\" locale except for codecvt: " << l3; std::locale l4(l1, l2, std::locale::ctype); std::cout << "Name of \"C\" locale except for ctype, which is unicode:\n " << l4; }
Possible output:
Name of a copy of the classic "C" locale: C Name of unicode locale: en_US.UTF-8 Name of "C" locale except for codecvt: * Name of "C" locale except for ctype, which is unicode: LC_CTYPE=en_US.UTF-8; LC_NUMERIC=C; LC_TIME=C; LC_COLLATE=C; LC_MONETARY=C; LC_MESSAGES=C; LC_PAPER=C; LC_NAME=C; LC_ADDRESS=C; LC_TELEPHONE=C; LC_MEASUREMENT=C; LC_IDENTIFICATION=C[edit] Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR Applied to Behavior as published Correct behavior LWG 436 C++98 for overload (7), it was unclearFacet
can be cv-qualified it can be const-qualified,
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4