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
Ejecuta este código
#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) |
Enlaces externos
| Lista de configuraciones regionales en Windows. | |
| Lista de configuraciones regionales en Linux. |