Namespaces
Variants
Views
Actions

std::use_facet

From cppreference.com
< cpp‎ | locale
Revision as of 22:31, 9 August 2022 by Xmcgcg (Talk | contribs)

 
 
 
Defined in header <locale>
template< class Facet >
const Facet& use_facet( const std::locale& loc );

Obtains a reference to a facet implemented by loc.

Contents

Parameters

loc - the locale object to query

Return value

Returns a reference to the facet. The reference returned by this function is valid as long as any std::locale object refers to that facet.

Exceptions

std::bad_cast if std::has_facet<Facet>(loc) == false.

Example

Display the 3-letter currency name used by the user's preferred locale

#include <iostream>
#include <locale>
 
int main()
{
    std::locale loc = std::locale(""); // user's preferred locale
    std::cout << "Your currency string is "
              << std::use_facet<std::moneypunct<char, true>>(loc).curr_symbol() << '\n';
}

Output:

Your currency string is USD

Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
LWG 31 C++98 the returned reference remained usable
as long as the locale value itself exists
the returned reference remains usable as
long as some locale object refers to that facet

See also

set of polymorphic facets that encapsulate cultural differences
(class) [edit]
checks if a locale implements a specific facet
(function template) [edit]