Spec-Zone.ru › C++

std::use_facet

Определено в заголовке <locale>
template< class Facet >
const Facet& use_facet( const std::locale& loc );

Получает ссылку на фасет, реализованный loc.

Программа некорректна, если Facet не является фасетом, чье определение содержит общедоступный статический член id или это фасет с квалификатором volatile.

Параметры

loc - объект локали для запроса

Значение результата

Возвращает ссылку на фасет. Ссылка, возвращаемая этой функцией, действительна до тех пор, пока любой объект std::locale ссылается на этот фасет.

Исключения

std::bad_cast если std::has_facet<Facet>(loc) == false.

Пример

Выводит название валюты из 3-х букв, используемое в пользовательской локали.

#include <iostream>
#include <locale>
 
int main()
{
    for (const char* name: {"en_US.UTF-8", "de_DE.UTF-8", "en_GB.UTF-8"})
    {
        std::locale loc = std::locale(name); // user's preferred locale
        std::cout << "Your currency string is "
                  << std::use_facet<std::moneypunct<char, true>>(loc).
                     curr_symbol() << '\n';
    }
}

Вывод:

Your currency string is USD
Your currency string is EUR
Your currency string is GBP

Отчеты об ошибках

Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применено к Поведение, как опубликовано Корректное поведение
LWG 31 C++98 возвращаемая ссылка оставалась пригодной
до тех пор, пока существовало значение локали
возвращаемая ссылка остается пригодной,
пока какой-либо объект локали ссылается на этот фасет
LWG 38 C++98 Facet не должно было иметь прямого члена id обязательно
LWG 436 C++98 неясно, можно ли применять cv-квалификатор к Facet можно применять const-квалификатор, но не volatile-квалификатор

См. также

locale
набор полиморфных фасетов, которые описывают культурные различия
(класс)
has_facet
проверяет, реализует ли локали определенный фасет
(шаблон функции)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/locale/use_facet

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API