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
廣告