public member function
<ios> <iostream>

std::ios_base::imbue

locale imbue (const locale& loc);
灌输区域设置
loc 关联到流,作为用于区分区域设置的操作的新区域设置对象。

在此之前,该函数会调用通过成员 register_callback 注册的所有函数,并将 imbue_event 作为第一个参数。

标准流类不继承此成员,而是继承 basic_ios::imbue,后者会调用此函数,但也会将 locale 关联到关联的*流缓冲区*(如果存在)。

参数

loc
作为流的新区域设置关联的 locale

返回值

调用前的流关联的 locale 对象。

示例

1
2
3
4
5
6
7
8
9
10
11
// imbue example
#include <iostream>     // std::cout
#include <locale>       // std::locale

int main()
{
  std::locale mylocale("");   // get global locale
  std::cout.imbue(mylocale);  // imbue global locale
  std::cout << 3.14159 << '\n';
  return 0;
}

此代码使用环境中提供的全局区域设置来写入一个浮点数。例如,在一个将西班牙区域设置配置为默认值的系统中,这可能会使用逗号作为小数点分隔符来写入数字
3,14159


数据竞争

修改流对象。
并发访问同一个流对象可能导致数据争用。

异常安全

基本保证:如果抛出异常,流处于有效状态。

另见