C++ IOS::imbue() 函数



C++ 的std::ios::imbue()函数用于设置或更改输入和输出流的区域设置。它用于通过更改与流关联的区域设置来自定义数据的格式。它允许您处理特定于区域设置的要求,例如数字格式、日期和时间表示。它以std::locale对象作为参数,并返回流之前的区域设置。

语法

以下是std::ios::imbue()函数的语法。

locale imbue (const locale& loc);

参数

  • loc − 它指示要作为流的新区域设置注入的区域设置对象。

返回值

调用之前的与流关联的区域设置对象。

异常

如果抛出异常,则流处于有效状态。

数据竞争

修改流对象。

同时访问同一个流对象可能会导致数据竞争。

示例

在下面的示例中,我们将考虑imbue()函数的基本用法。

#include <iostream>
#include <locale>
int main()
{
    std::cout.imbue(std::locale());
    std::cout << "Current Locale : " << std::cout.getloc().name() << std::endl;
    return 0;
}

输出

以上代码的输出如下:

Current Locale : C

示例

考虑以下示例,我们将使用美式英语区域设置,该区域设置使用逗号作为千位分隔符来格式化数字。

#include <iostream>
#include <locale>
int main()
{
    std::locale a("en_US.utf8");
    std::cout.imbue(a);
    std::cout << 1122343.89 << std::endl;
    return 0;
}

输出

以上代码的输出如下:

1,122,343.89

示例

让我们来看下面的例子,我们将使用美式英语来打印以适当格式显示的货币值。

#include <iostream>
#include <locale>
#include <iomanip>
int main()
{
    std::locale a("en_US.utf8");
    std::cout.imbue(a);
    std::cout << std::showbase << std::put_money(123431232) << std::endl;
    return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

$1,234,312.32
ios.htm
广告