Espacios de nombres
Variantes

std::locale::locale

De cppreference.com
 
 
 
 
locale() throw();
(1) (hasta C++11)
locale() noexcept;
(desde C++11)
locale( const locale& other ) throw();
(2) (hasta C++11)
locale( const locale& other ) noexcept;
(desde C++11)
explicit locale( const char* std_name );
(3)
explicit locale( const std::string& std_name );
(4) (desde 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) (desde C++11)
template< class Facet > locale( const locale& other, Facet* f );
(7)
locale( const locale& other, const locale& one, category cats );
(8)

Construye un nuevo objeto de configuración regional.

1) Constructor por defecto. Construye una copia de la configuración regional global de C++, que es la configuración regional utilizada más recientemente como argumento para std::locale::global o una copia de std::locale::classic() si no se ha realizado ninguna llamada a std::locale::global.
2) Constructor de copia. Construye una copia de other.
3,4) Construye una copia de la configuración regional del sistema con el std_name especificado (como "C", o "POSIX", o "en_US.UTF-8", o "English_US.1251"), si dicha configuración regional es compatible con el sistema operativo. La configuración regional construida de esta manera tiene un nombre.
4) Equivalente a locale(std_name.c_str()).
5) Construye una copia de other excepto todas las facetas identificadas por el argumento cats, que se copian de la configuración regional del sistema identificada por su std_name. La configuración regional construida de esta manera tiene un nombre si y solo si other tiene un nombre.
6) Equivalente a locale(other, std_name.c_str(), cats).
7) Construye una copia de other excepto la faceta de tipo Facet (normalmente deducida del tipo del argumento) que se instala desde f. Si f es un puntero nulo, la configuración regional construida es una copia completa de other. El programa está mal formado si Facet no es una facet o es una faceta calificada como volatile.
Si f es nulo, la configuración regional construida tiene el mismo nombre que other. De lo contrario, la configuración regional construida no tiene nombre.
8) Construye una copia de other excepto todas las facetas identificadas por el argumento cats, que se copian de one.
Si cats es igual a locale::none, la configuración regional construida tiene un nombre si y solo si other tiene un nombre. De lo contrario, la configuración regional construida tiene un nombre si y solo si tanto other como one tienen nombre.

Parámetros

other - Otra configuración regional a copiar.
std_name - Nombre de la configuración regional del sistema que se utilizará.
f - Puntero a una faceta con la que fusionar other.
cats - Las categorías de faceta utilizadas para identificar las facetas con las que fusionar other.
one - Otra configuración regional de la que tomar facetas.

Excepciones

3,5) std::runtime_error si el sistema operativo no tiene una configuración regional llamada std_name o si std_name es un puntero nulo.
4,6) std::runtime_error si el sistema operativo no tiene una configuración regional llamada std_name.

Notas

La sobrecarga (7) normalmente se llama con su segundo argumento, f, obtenido directamente de una nueva expresión: la configuración regional es responsable de llamar a delete correspondiente desde su propio destructor.

Ejemplo

#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 << "Nombre de la configuración regional clásica \"C\":" << l1;

    std::locale l2("en_US.UTF-8");
    std::cout << "Nombre de la configuración regional Unicode : " << l2;

    std::locale l3(l1, new std::codecvt_utf8<wchar_t>);
    std::cout << "Nombre de la configuración regional \"C\" excepto para codecvt: " << l3;

    std::locale l4(l1, l2, std::locale::ctype);
    std::cout << "Nombre de la configuración regional \"C\" excepto para ctype, que es Unicode:\n  " << l4;
}

Posible salida:

Nombre de la configuración regional clásica "C": C
Nombre de la configuración regional Unicode : en_US.UTF-8
Nombre de la configuración regional "C" excepto para codecvt: *
Nombre de la configuración regional "C" excepto para ctype, que es 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

Informes de defectos

Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.

ID Aplicado a Comportamiento según lo publicado Comportamiento correcto
LWG 436 C++98 Para la sobrecarga (7), no estaba claro
si Facet podía estar calificada const volatile.
Puede estar calificada const, pero no calificada volatile.
LWG 2295 C++98 Para la sobrecarga (7), la configuración regional
construida no tenía nombre incluso si f es nulo.
Tiene el nombre de other.

Véase también

Destruye la configuración regional y las facetas cuyo recuento de referencia se convierte en cero.
(función miembro pública) [editar]

Enlaces externos

  Lista de configuraciones regionales en Windows.
  Lista de configuraciones regionales en Linux.