# std::locale Class Reference

Container class for localization functionality. More...

`#include <locale_classes.h>`

List of all members.

## Public Types

typedef int | category
| Definition of locale::category.

## Public Member Functions

| locale () throw ()
| Default constructor.
| locale (const locale &__other) throw ()
| Copy constructor.
| locale (const char *s)
| Named locale constructor.
| locale (const locale &__base, const char *s, category cat)
| Construct locale with facets from another locale.
| locale (const locale &__base, const locale &add, category cat)
| Construct locale with facets from another locale.
template<typename Facet> | locale (const locale &__other, Facet *__f)
| Construct locale with another facet.
| ~locale () throw ()
| Locale destructor.
const locale & | operator= (const locale &__other) throw ()
| Assignment operator.
template<typename Facet> locale | combine (const locale &__other) const
| Construct locale with another facet.
string | name () const
| Return locale name.
bool | operator== (const locale &__other) const throw ()
| Locale equality.
bool | operator!= (const locale &__other) const throw ()
| Locale inequality.
template<typename Char, typename Traits, typename Alloc> bool | operator() (const basic_string< Char, Traits, Alloc > &s1, const basic_string< Char, Traits, Alloc > &s2) const
| Compare two strings according to collate.

## Static Public Member Functions

locale | global (const locale &)
| Set global locale.
const locale & | classic ()
| Return reference to the "C" locale.

## Static Public Attributes

const category | none
| Category values.
const category | ctype
| Category values.
const category | numeric
| Category values.
const category | collate
| Category values.
const category | time
| Category values.
const category | monetary
| Category values.
const category | messages
| Category values.
const category | all
| Category values.

## Friends

template<typename Facet> bool | has_facet (const locale &) throw ()
| Test for the presence of a facet.
template<typename Facet> const Facet & | use_facet (const locale &)
| Return a facet.

## Detailed Description

Container class for localization functionality.

The locale class is first a class wrapper for C library locales. It is also an extensible container for user-defined localization. A locale is a collection of facets that implement various localization features such as money, time, and number printing.

Constructing C++ locales does not change the C library locale.

This library supports efficient construction and copying of locales through a reference counting implementation of the locale class.

Definition at line 67 of file locale_classes.h.

## Member Typedef Documentation

typedef int std::locale::category

| Definition of locale::category. Definition at line 72 of file locale_classes.h.

## Constructor & Destructor Documentation

std::locale::locale | ( |  | ) | throw ()

| Default constructor. Constructs a copy of the global locale. If no locale has been explicitly set, this is the "C" locale. Definition at line 101 of file locale_init.cc. Referenced by combine(), and global().

std::locale::locale | ( | const locale & | __other | ) | throw ()

Copy constructor.

Constructs a copy of other.

Parameters:

  | other | The locale to copy.

Definition at line 58 of file locale.cc.

std::locale::locale | ( | const char * | s | ) | `[explicit]`

Named locale constructor.

Constructs a copy of the named C library locale.

Parameters:

  | s | Name of the locale to construct.

Exceptions:

  | std::runtime_error | if s is null or an undefined locale.

Definition at line 37 of file localename.cc.

References std::basic_string< CharT, Traits, Alloc >::c_str(), std::basic_string< CharT, Traits, Alloc >::end(), std::basic_string< CharT, Traits, Alloc >::erase(), and std::basic_string< CharT, Traits, Alloc >::reserve().

std::locale::locale | ( | const locale & | __base,
|  | const char * | s,
|  | category | cat
| ) |

Construct locale with facets from another locale.

Constructs a copy of the locale base. The facets specified by cat are replaced with those from the locale named by s. If base is named, this locale instance will also be named.

Parameters:

  | base | The locale to copy.
  | s | Name of the locale to use facets from.
  | cat | Set of categories defining the facets to use from s.

Exceptions:

  | std::runtime_error | if s is null or an undefined locale.

Definition at line 150 of file localename.cc.

std::locale::locale | ( | const locale & | __base,
|  | const locale & | add,
|  | category | cat
| ) |

Construct locale with facets from another locale.

Constructs a copy of the locale base. The facets specified by cat are replaced with those from the locale add. If base and add are named, this locale instance will also be named.

Parameters:

  | base | The locale to copy.
  | add | The locale to use facets from.
  | cat | Set of categories defining the facets to use from add.

Definition at line 160 of file localename.cc.

template<typename Facet>
std::locale::locale | ( | const locale & | __other,
|  | Facet * | __f
| ) |

Construct locale with another facet.

Constructs a copy of the locale other. The facet is added to , replacing an existing facet of type Facet if there is one. If is null, this locale is a copy of other.

Parameters:

  | other | The locale to copy.
  | f | The facet to add in.

Definition at line 570 of file locale_classes.h.

std::locale::~locale | ( |  | ) | throw ()

| Locale destructor. Definition at line 68 of file locale.cc.

## Member Function Documentation

const locale & std::locale::classic | ( |  | ) | `[static]`

| Return reference to the "C" locale. Definition at line 132 of file locale_init.cc.

template<typename Facet>
locale std::locale::combine | ( | const locale & | __other | ) | const

Construct locale with another facet.

Constructs and returns a new copy of this locale. Adds or replaces an existing facet of type Facet from the locale other into the new locale.

Parameters:

  | Facet | The facet type to copy from other
  | other | The locale to copy from.

Returns:
  Newly constructed locale.

Exceptions:

  | std::runtime_error | if other has no facet of type Facet.

Definition at line 46 of file locale_facets.tcc.

References locale().

locale std::locale::global | ( | const locale & |  | ) | `[static]`

Set global locale.

This function sets the global locale to the argument and returns a copy of the previous global locale. If the argument has a name, it will also call std::setlocale(LCALL, loc.name()).

Parameters:

  | locale | The new locale to make global.

Returns:
  Copy of the old global locale.

Definition at line 111 of file locale_init.cc.

References std::basic_string< CharT, Traits, Alloc >::c_str(), locale(), and name().

string std::locale::name | ( |  | ) | const

Return locale name.

Returns:
  Locale name or "*" if unnamed.

Definition at line 102 of file locale.cc.

References std::basic_string< CharT, Traits, Alloc >::reserve().

Referenced by global().

bool std::locale::operator!= | ( | const locale & | __other | ) | const throw ()`[inline]`

Locale inequality.

Parameters:

  | other | The locale to compare against.

Returns:
  ! (*this == other)

Definition at line 241 of file locale_classes.h.

References std::operator==().

template<typename CharT, typename Traits, typename Alloc>
bool std::locale::operator() | ( | const basic_string< Char, Traits, Alloc > & | s1,
|  | const basic_string< Char, Traits, Alloc > & | s2
| ) | const

Compare two strings according to collate.

Template operator to compare two strings using the compare function of the collate facet in this locale. One use is to provide the locale to the sort function. For example, a vector v of strings could be sorted according to locale loc by doing:

      std::sort(v.begin(), v.end(), loc);

Parameters:

  | s1 | First string to compare.
  | s2 | Second string to compare.

Returns:
  True if collate<Char> facet compares s1 < s2, else false.

Definition at line 63 of file locale_facets.tcc.

References std::basic_string< CharT, Traits, Alloc >::data(), and std::basic_string< CharT, Traits, Alloc >::length().

const locale & std::locale::operator= | ( | const locale & | __other | ) | throw ()

Assignment operator.

Set this locale to be a copy of other.

Parameters:

  | other | The locale to copy.

Returns:
  A reference to this locale.

Definition at line 93 of file locale.cc.

bool std::locale::operator== | ( | const locale & | __other | ) | const throw ()

Locale equality.

Parameters:

  | other | The locale to compare against.

Returns:
  True if other and this refer to the same locale instance, are copies, or have the same name. False otherwise.

Definition at line 72 of file locale.cc.

## Friends And Related Function Documentation

template<typename Facet>
bool has_facet | ( | const locale & | __loc | ) | throw ()`[friend]`

Test for the presence of a facet.

has_facet tests the locale argument for the presence of the facet type provided as the template parameter. Facets derived from the facet parameter will also return true.

Parameters:

  | Facet | The facet type to test the presence of.
  | locale | The locale to test.

Returns:
  true if locale contains a facet of type Facet, else false.

Definition at line 85 of file locale_facets.tcc.

template<typename Facet>
const Facet& use_facet | ( | const locale & | __loc | ) | `[friend]`

Return a facet.

use_facet looks for and returns a reference to a facet of type Facet where Facet is the template parameter. If has_facet(locale) is true, there is a suitable facet to return. It throws std::bad_cast if the locale doesn't contain a facet of type Facet.

Parameters:

  | Facet | The facet type to access.
  | locale | The locale to use.

Returns:
  Reference to facet of type Facet.

Exceptions:

  | std::bad_cast | if locale doesn't contain a facet of type Facet.

Definition at line 107 of file locale_facets.tcc.

## Member Data Documentation

const locale::category std::locale::all `[static]`

| Category values. The standard category values are none, ctype, numeric, collate, time, monetary, and messages. They form a bitmask that supports union and intersection. The category all is the union of these values. Definition at line 47 of file locale.cc.

const locale::category std::locale::collate `[static]`

| Category values. The standard category values are none, ctype, numeric, collate, time, monetary, and messages. They form a bitmask that supports union and intersection. The category all is the union of these values. Definition at line 43 of file locale.cc.

const locale::category std::locale::ctype `[static]`

| Category values. The standard category values are none, ctype, numeric, collate, time, monetary, and messages. They form a bitmask that supports union and intersection. The category all is the union of these values. Definition at line 41 of file locale.cc.

const locale::category std::locale::messages `[static]`

| Category values. The standard category values are none, ctype, numeric, collate, time, monetary, and messages. They form a bitmask that supports union and intersection. The category all is the union of these values. Definition at line 46 of file locale.cc.

const locale::category std::locale::monetary `[static]`

| Category values. The standard category values are none, ctype, numeric, collate, time, monetary, and messages. They form a bitmask that supports union and intersection. The category all is the union of these values. Definition at line 45 of file locale.cc.

const locale::category std::locale::none `[static]`

| Category values. The standard category values are none, ctype, numeric, collate, time, monetary, and messages. They form a bitmask that supports union and intersection. The category all is the union of these values. Definition at line 40 of file locale.cc.

const locale::category std::locale::numeric `[static]`

| Category values. The standard category values are none, ctype, numeric, collate, time, monetary, and messages. They form a bitmask that supports union and intersection. The category all is the union of these values. Definition at line 42 of file locale.cc.

const locale::category std::locale::time `[static]`

| Category values. The standard category values are none, ctype, numeric, collate, time, monetary, and messages. They form a bitmask that supports union and intersection. The category all is the union of these values. Definition at line 44 of file locale.cc.

The documentation for this class was generated from the following files:

- locale_classes.h
- locale.cc
- locale_init.cc
- localename.cc
- locale_facets.tcc