Disponible la nueva versión "donationware" 7.3 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
};