Namespaces
Variants

std:: has_facet

From cppreference.net
Definiert im 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 das Gebietsschema loc den Facet Facet implementiert.

Das Programm ist fehlerhaft, wenn Facet kein Facet ist oder es sich um einen volatile-qualifizierten Facet handelt.

Inhaltsverzeichnis

Parameter

loc - das zu abfragende Locale-Objekt

Rückgabewert

Gibt true zurück, falls der Facet Facet in der Locale loc installiert wurde, false andernfalls.

Hinweise

std::has_facet muss für alle Locales loc true zurückgeben, falls Facet einer der Standard-Facets entspricht, die hier aufgeführt sind.

Beispiel

#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

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

Siehe auch

Menge polymorpher Facetten, die kulturelle Unterschiede kapseln
(Klasse)
erhält eine Facette aus einem Locale
(Funktions-Template)