Шаблонна функція std::use_facet використовується для отримання посилання на конкретний клас facet локалі loc. Оголошення функції виглядає наступним чином:
template <class Facet> const Facet& use_facet (const locale& loc) ;
Параметр loc вказує на локаль, аспект якої необхідно отримати. Параметр шаблону вказує на клас дочірній від класу facet, наприклад, стандартні аспекти локалі - collate, codecvt, ctype, messages і інші. Якщо вказаний тип-аспект не присутній у локалі, функція генерує виключення bad_cast. Функція has_facet може бути використаною для перевірки наявності необхідного класу, перед тим, як його намагатись використати за допомогою даної функції. Функція повертає константне посилання на необхідний примірник об'єкта конкретної особливості локалі. Для використання даної функції необхідно підключити файл locale:
#include <locale> /* усе корисне включно з use_facet */

Приклад

Розглянемо простий приклад використання даної функції.
#include <locale> /* функція use_facet */
using namespace std ; /* друкуємо усе без std */

/* головна функція програми */
int main (int argc, char** argv)
{
  /* створюємо піддослідну локаль */
  locale loc ("uk_UA.UTF-8") ;
  
  /* намагаємось отримати посилання
  ** на стандартний дочірній клас facet - num_get */
  /* увага! дана функція може генерувати виключення */
  const num_get<wchar_t>& cfacet = use_facet < num_get<wchar_t> > (loc) ;
  
  return 0 ;
}
Категорії: