5.2.3 La clase locale
La clase locale de la Librería Estándar C++
está definida en el espacio de nombres std en la cabecera <locale>,
y responde a la siguiente interfaz:
class locale {
public:
// --------------------------- propiedades:
class facet;
class id;
typedef int category;
static const category // valores a
título de ejemplo
none = 0,
collate = 0x010, ctype = 0x020,
monetary = 0x040, numeric = 0x080, time = 0x100,
messages = 0x200,
all = collate | ctype | monetary | numeric | time | messages;
// ---------------------------- constructores/constructor-copia
locale() throw()
// constructor por defecto
locale(const locale& other) throw()
explicit locale(const char* std_name);
locale(const locale& other, const char* std_name, category
cat);
template <class Facet> locale(const locale& other, Facet* f);
locale(const locale& other, const locale& one, category
cat);
//
---------------------------- destructor no virtual
~locale() throw();
// ---------------------------- operadores y otros métodos
const locale& operator=(const locale& other) throw();
template <class Facet> locale combine(const locale& other);
basic_string<char> name() const;
bool operator==(const locale& other) const;
bool operator!=(const locale& other) const;
template <class charT, class Traits, class Allocator>
bool operator()(const basic_string<charT,Traits,Allocator>& s1,
const basic_string<charT,Traits,Allocator>& s2) const;
// ----------------------------- objetos globales
static locale global(const locale& loc);
static const locale& classic();
};
Como puede verse, dispone de tres propiedades públicas: facet, id y category. Las dos primeras son clases; la última es en realidad una constante entera. Sus interfaces son las siguientes:
class locale::facet {
protected:
explicit facet(size_t refs = 0); // constructor explícito por
defecto
virtual ~facet();
// destructor virtual
private:
facet(const facet&);
// constructor no definido
void operator=(const facet&); // operador =
no definido
};
class locale::id {
public:
id();
// constructor por defecto
private:
void operator=(const id&);
// operador = no definido
id(const id&);
// constructor no definido
};