函式
<iomanip>

std::put_money

template <class moneyT>/*unspecified*/ put_money (const moneyT& mon, bool intl = false);
貨幣值輸出
mon 的表示形式作為貨幣值插入到其應用到的輸出流中。

內部,該函式首先構建一個型別為 basic_ostream::sentry 的物件來訪問輸出序列。然後(如果 sentry 物件的求值為 true),它會呼叫 money_put::put(使用流的選定區域設定)來執行格式化和插入操作,並相應地調整流的內部狀態標誌。最後,在返回前銷燬 sentry 物件。

此操縱符在標頭檔案 <iomanip> 中宣告。

引數

mon
貨幣值。
moneyT 應為 long doublebasic_string 的例項化。
intl
true 表示國際表示形式,false 表示其他。
此引數用於內部例項化正確的 moneypunct 類。

返回值

未指定。此函式只應作為流操縱符使用(見示例)。

錯誤透過修改流的內部狀態標誌來指示。
flag錯誤
eofbit-
failbit函式未能格式化 mon(如果 sentry 的構造失敗,也可能設定此標誌)。
badbit流上的插入失敗,或者發生了其他錯誤(例如,當此函式捕獲內部操作丟擲的異常時)。
當設定此標誌時,流的完整性可能已受到影響。
一次操作可能設定多個標誌。

如果操作在流上設定了一個使用其成員 exceptions 註冊的內部狀態標誌,則該函式將丟擲型別為 ios_base::failure 的異常。

示例

1
2
3
4
5
6
7
8
9
// put_money manipulator example
#include <iostream>     // std::cout
#include <iomanip>      // std::put_money

int main ()
{
  std::cout << "Price:" << std::put_money(10.50L) << '\n';
  return 0;
}


資料競爭

修改被插入的流物件。
對同一流物件的併發訪問可能導致資料競爭,但標準流物件(coutcerrclogwcoutwcerrwclog)在其與 stdio 同步時除外(在這種情況下,不會產生資料競爭,儘管不對來自多個執行緒的字元插入順序進行保證)。

異常安全

基本保證:如果丟擲異常,物件處於有效狀態。
如果最後的錯誤狀態標誌不是 goodbit 且成員 exceptions 被設定為針對該狀態進行丟擲,則它會丟擲成員型別為 failure 的異常。
函式會捕獲並處理內部操作丟擲的任何異常,並設定 badbit。如果在對 exceptions 的最後一次呼叫中設定了 badbit,則函式會重新丟擲捕獲到的異常。

另見