std::has_facet
Von cppreference.com
| Definiert in Header <locale> |
||
template< class Facet > bool has_facet( const locale& loc ) throw(); |
(bis C++11) | |
| template< class Facet > bool has_facet( const locale& loc ) noexcept; |
(seit C++11) | |
Prüft, ob die Locale loc die Facette Facet implementiert.
Das Programm ist schlecht formuliert, wenn Facet keine Facette ist oder es sich um eine volatile-qualifizierte Facette handelt.
Inhalt |
[bearbeiten] Parameter
| loc | - | das zu prüfende Locale-Objekt |
[bearbeiten] Rückgabewert
Gibt true zurück, wenn die Facette Facet in der Locale loc installiert wurde, andernfalls false.
[bearbeiten] Hinweise
std::has_facet muss für alle Locales loc true zurückgeben, wenn Facet eine der Standardfacette ist, wie hier angegeben.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <iostream> #include <locale> // minimal custom facet struct myfacet : public std::locale::facet { static std::locale::id id; }; std::locale::id myfacet::id; int main() { // loc is a "C" locale with myfacet added std::locale loc(std::locale::classic(), new myfacet); std::cout << std::boolalpha << "Can loc classify chars? " << std::has_facet<std::ctype<char>>(loc) << '\n' << "Can loc classify char32_t? " << std::has_facet<std::ctype<char32_t>>(loc) << '\n' << "Does loc implement myfacet? " << std::has_facet<myfacet>(loc) << '\n'; }
Ausgabe
Can loc classify chars? true Can loc classify char32_t? false Does loc implement myfacet? true
[bearbeiten] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 436 | C++98 | Es war unklar, ob Facet cv-qualifiziert sein kann |
Es kann const-qualifiziert sein, aber nicht volatile-qualifiziert |
[bearbeiten] Siehe auch
| Satz von polymorphen Facetten, die kulturelle Unterschiede kapseln (Klasse) | |
| ruft eine Facette aus einer Locale ab (Funktionstemplate) |