std::locale::combine
来自cppreference.com
在标头 <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 (公开成员函数) |