std::use_facet
来自cppreference.com
                    
                                        
                    
                    
                                                            
                    |   在标头  <locale> 定义
  | 
||
|   template< class Facet > const Facet& use_facet( const std::locale& loc );  | 
||
获得到 loc 实装的平面的引用。
如果 Facet 不是定义中包含公开静态成员 id 的平面或者是有 volatile 限定的平面,那么程序非良构。
参数
| loc | - | 要查询的本地环境对象 | 
返回值
返回到平面的引用。此函数返回的引用在有引用该平面的 std::locale 对象存在的期间保持合法。
异常
在 std::has_facet<Facet>(loc) == false 的情况下抛出 std::bad_cast。
示例
显示用户偏好的本地环境所用的 3 位字母金额名:
运行此代码
#include <iostream> #include <locale> int main() { std::locale loc = std::locale(""); // 用户偏好的本地环境 std::cout << "你的金额字符串是 " << std::use_facet<std::moneypunct<char, true>>(loc).curr_symbol() << '\n'; }
可能的输出:
你的金额字符串是 USD
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
| 缺陷报告 | 应用于 | 出版时的行为 | 正确行为 | 
|---|---|---|---|
| LWG 31 | C++98 | 返回的引用在该本地环境值存在的期间保持合法 | 返回的引用在有引用该平面的本地环境对象存在的期间保持合法 | 
| LWG 38 | C++98 |  Facet 不需要有直接成员 id
 | 
需要 | 
| LWG 436 | C++98 |  不明确 Facet 是否可以有 cv 限定
 | 
可以有 const 限定,但不能有 volatile 限定 | 
参阅
|   用来封装文化差异的多态平面的集合  (类)  | |
|   检查本地环境是否实现特定的平面  (函数模板)  |