std::messages<CharT>:: get, std::messages<CharT>:: do_get
|
Défini dans l'en-tête
<locale>
|
||
|
public
:
string_type get ( catalog cat, int set, int msgid, const string_type & dfault ) const ; |
(1) | |
|
protected
:
virtual string_type do_get ( catalog cat, int set, int msgid, const string_type & dfault ) const ; |
(2) | |
do_get
de la classe la plus dérivée.
Table des matières |
Paramètres
| cat | - | identifiant du catalogue de messages obtenu à partir de open() et non encore transmis à close() |
| set | - | argument défini par l'implémentation, ensemble de messages dans POSIX |
| msgid | - | argument défini par l'implémentation, identifiant de message dans POSIX |
| dfault | - | la chaîne à rechercher dans le catalogue (si le catalogue utilise la recherche par chaîne) et également la chaîne à renvoyer en cas d'échec |
Valeur de retour
Le message du catalogue ou une copie de dfault si aucun n'a été trouvé.
Notes
Sur les systèmes POSIX, cet appel de fonction se traduit généralement par un appel à
catgets()
, et les paramètres
set
,
msgid
, et
dfault
sont transmis à
catgets()
tels quels. Dans GNU libstdc++, cette fonction ignore
set
et
msgid
et appelle simplement
gettext
(
dfault
)
de GNU dans la locale requise.
Exemple
L'exemple suivant démontre la récupération de messages : sur un système GNU/Linux typique, il lit depuis
/usr/share/locale/de/LC_MESSAGES/sed.mo
.
#include <iostream> #include <locale> int main() { 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 catalog\n"; 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); }
Sortie possible :
"No match" in German: Keine Übereinstimmung "Memory exhausted" in German: Speicher erschöpft