A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://en.cppreference.com/w/cpp/language/../error/error_code/../../locale/locale/locale.html below:

std::locale::locale - cppreference.com

(1)

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 );

(7)

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

other

except for the facet of type

Facet

(typically deduced from the type of the argument) which is installed from

f

. If

f

is a null pointer, the constructed locale is a full copy of

other

. The program is ill-formed if

Facet

is not a

facet

or 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.

[edit] Parameters other - another locale to copy std_name - name of the system locale to use f - pointer to a facet to merge with other cats - the facet categories used to identify the facets to merge with other one - another locale to take facets from [edit] Exceptions 3,5) std::runtime_error

if the operating system has no locale named

std_name

or if

std_name

is a null pointer.

[edit] Notes

Overload (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 unclear
whether Facet can be cv-qualified it can be const-qualified,
but not volatile-qualified LWG 2295 C++98 for overload (7), the constructed locale had no name even if f is null it has the name of other [edit] See also destructs the locale and the facets whose reference count becomes zero
(public member function) [edit] [edit] External links

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