函数
<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,则函数会重新抛出捕获到的异常。

另见