Definido en el encabezado
public:
catalog open(const std::basic_string<char>& name,const std::locale& loc )const;
(1)
protected:virtual catalog do_open(const std::basic_string<char>& name,const std::locale& loc )const;
(2)

1) Función miembro pública, llama a la función miembro virtual protegida do_open de la clase más derivada.

2) Obtiene un valor de tipo catalog (heredado de std::messages_base), que se puede pasar a get() para recuperar mensajes del catálogo de mensajes nombrado por name. Este valor es utilizable hasta que se pasa a close().

Parámetros

nombre nombre del catálogo de mensajes para abrir
ubicación un objeto de configuración regional que proporciona facetas adicionales que pueden ser necesarias para leer mensajes del catálogo, como std::codecvt para realizar conversiones de ancho/multibyte

Valor de retorno

El valor no negativo de tipo catalog que se puede usar con get() y close(). Devuelve un valor negativo si no se pudo abrir el catálogo.

notas

En los sistemas POSIX, esta llamada de función generalmente se traduce en una llamada a catopen(). En GNU libstdc++, llama textdomain.

La ubicación real del catálogo está definida por la implementación: para el catálogo "sed" (catálogos de mensajes instalados con la utilidad Unix 'sed') en la configuración regional alemana, por ejemplo, el archivo abierto por esta llamada de función puede ser /usr/lib/nls/msg/de_DE/sed.cat, /usr/lib/locale/de_DE/LC_MESSAGES/sed.cato /usr/share/locale/de/LC_MESSAGES/sed.mo.

Ejemplo

El siguiente ejemplo demostró la recuperación de mensajes: en un sistema GNU/Linux típico, lee de /usr/share/locale/de/LC_MESSAGES/sed.mo.

#include#includeintmain()
    std::locale loc("de_DE.utf8");
    std::cout.imbue(loc);auto& facet = std::use_facet<std::messages<char>>(loc);auto cat = facet.open("sed", loc);if(cat <0)
        std::cout <<"Could not open german "sed" message catalogn";else
        std::cout <<""No match" in German: "<< facet.get(cat,0,0,"No match")<<'n'<<""Memory exhausted" in German: "<< facet.get(cat,0,0,"Memory exhausted")<<'n';
    facet.close(cat);

Salida posible:

"No match" in German: Keine Übereinstimmung
"Memory exhausted" in German: Speicher erschöpft

Ver también