Bienvenido a nuestro sitio web, aquí hallarás la respuesta a lo que estabas buscando.
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.cat
o /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#include intmain() 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
Si te sientes incitado, puedes dejar un enunciado acerca de qué le añadirías a este post.