std::put_money
定义于头文件 <iomanip>
|
||
template< class MoneyT > /*unspecified*/ put_money( const MoneyT& mon, bool intl = false ); |
(C++11 起) | |
用于表达式 out << put_money(mon, intl) 时,转换货币值 mon
为 out
中当前感染的 locale 的 std::money_put 平面所指定的字符表示。
out << put_money(mon, intl) 中的插入操作表现为有格式输出函数 (FormattedOutputFunction) 。
参数
mon | - | 货币值, long double 或 std::basic_string 之一 |
intl | - | 若为 true 则使用国际通货字符串,否则使用通货符号 |
返回值
返回未指定类型的对象,使若 out
为 std::basic_ostream<CharT, Traits> 类型输出流的名称,则表达式 out << put_money(mon, intl) 表现如同执行下列代码:
typedef std::ostreambuf_iterator<CharT, Traits> Iter;
typedef std::money_put<CharT, Iter> MoneyPut;
const MoneyPut& mp = std::use_facet<MoneyPut>(out.getloc());
const Iter end = mp.put(Iter(out.rdbuf()), intl, out, out.fill(), mon);
if (end.failed())
out.setstate(std::ios::badbit);
示例
运行此代码
#include <iostream> #include <iomanip> int main() { long double mon = 123.45; // 或 std::string mon = "123.45"; std::cout.imbue(std::locale("en_US.UTF-8")); std::cout << std::showbase << "en_US: " << std::put_money(mon) << " or " << std::put_money(mon, true) << '\n'; std::cout.imbue(std::locale("ru_RU.UTF-8")); std::cout << "ru_RU: " << std::put_money(mon) << " or " << std::put_money(mon, true) << '\n'; std::cout.imbue(std::locale("ja_JP.UTF-8")); std::cout << "ja_JP: " << std::put_money(mon) << " or " << std::put_money(mon, true) << '\n'; }
可能的输出:
en_US: $1.23 or USD 1.23 ru_RU: 1.23 руб or 1.23 RUB ja_JP: ¥123 or JPY 123
参阅
格式化货币值为字符序列以输出 (类模板) | |
(C++11) |
剖析货币值 (函数模板) |