std::messages<CharT>:: get, std::messages<CharT>:: do_get
|
Definiert im Header
<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
der am meisten abgeleiteten Klasse auf.
Inhaltsverzeichnis |
Parameter
| cat | - | Kennung des Nachrichtenkatalogs, erhalten von open() und noch nicht an close() übergeben |
| set | - | Implementierungsdefiniertes Argument, Nachrichtensatz in POSIX |
| msgid | - | Implementierungsdefiniertes Argument, Nachrichten-ID in POSIX |
| dfault | - | Die im Katalog zu suchende Zeichenkette (falls der Katalog Zeichenketten-Suche verwendet) und ebenfalls die bei einem Fehler zurückzugebende Zeichenkette |
Rückgabewert
Die Nachricht aus dem Katalog oder eine Kopie von dfault falls keine gefunden wurde.
Hinweise
Auf POSIX-Systemen übersetzt sich dieser Funktionsaufruf normalerweise in einen Aufruf von
catgets()
, und die Parameter
set
,
msgid
und
dfault
werden unverändert an
catgets()
übergeben. In GNU libstdc++ ignoriert diese Funktion
set
und
msgid
und ruft einfach GNU
gettext
(
dfault
)
in der erforderlichen Locale auf.
Beispiel
Das folgende Beispiel demonstriert das Abrufen von Nachrichten: Auf einem typischen GNU/Linux-System liest es aus
/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); }
Mögliche Ausgabe:
"No match" in German: Keine Übereinstimmung "Memory exhausted" in German: Speicher erschöpft