¡Nuevo!  por fin disponible la versión 5 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


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