std::locale::combine

来自cppreference.com
< cpp‎ | locale‎ | locale
 
 
本地化库
本地环境与平面
本地环境
平面类别基类
ctype(字符类别)平面
numeric(数值)平面
collate(对照比较)平面
time(时间)平面
monetary(货币)平面
messages(消息)平面
字符分类与转换
字符分类
转换
编码转换平面
(C++11)    
C 本地环境
 
 
在标头 <locale> 定义
template< class Facet >
locale combine( const locale& other ) const;

构造本地环境对象,结果是 *this 的副本,除了 Facet 类型平面复制自 other

如果 Facet 不是平面或者是有 volatile 限定的平面,那么程序非良构。

返回值

新的无名本地环境。

异常

other 没有实装 Facet 时抛出 std::runtime_error

示例

#include <iostream>
#include <locale>
 
int main()
{
    const double number = 1000.25;
    std::cout << "\"C\" 本地环境:" << number << '\n';
    std::locale loc = std::locale()
        .combine<std::numpunct<char>>(std::locale("en_US.UTF8"));
    std::cout.imbue(loc);
    std::cout << "带有 en_US numpunct 的 \"C\" 本地环境:" << number << '\n';
}

输出:

"C" 本地环境:1000.25
带有 en_US numpunct 的 "C" 本地环境:1,000.25

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 14 C++98 locale::combine 不是 const 的 改成 const 的
LWG 436 C++98 不明确 Facet 是否可以有 cv 限定 可以有 const 限定,但不能有 volatile 限定

参阅

构造新的 locale
(公开成员函数)