名前空間
変種
操作

std::money_put

From cppreference.com
< cpp‎ | locale
 
 
 
 
 
ヘッダー <locale> で定義
template<

    class CharT,
    class OutputIt = std::ostreambuf_iterator<CharT>

> class money_put;

クラス std::money_put は、通貨値を文字列としてフォーマットするための規則をカプセル化します。標準 I/O マニピュレータ std::put_money は、I/O ストリームのロケールの std::money_put ファセットを使用します。

cpp/locale/locale/facetstd-money put-inheritance.svg

継承図

std::money_put の特殊化が標準ライブラリによって提供されることが保証されていない場合(下記参照)、その put() および do_put() の動作は指定どおりに保証されません。

目次

[編集] 特殊化

標準ライブラリは、以下の特殊化を提供することが保証されています(これらは あらゆるロケールオブジェクトによって実装される必要があります)。

ヘッダー <locale> で定義
std::money_put<char> 通貨値のナローストリング表現を作成します。
std::money_put<wchar_t> 通貨値のワイドストリング表現を作成します。

さらに、標準ライブラリは、以下の型要件を満たすすべての特殊化を提供することも保証されています。

[編集] ネストされた型

定義
char_type CharT
string_type std::basic_string<CharT>
iter_type OutputIt

[編集] データメンバ

メンバ 説明
std::locale::id id [static] ファセットの識別子

[編集] メンバ関数

新しい money_put ファセットを構築します。
(public member function)
do_put を呼び出します。
(public member function)

[編集] 保護されたメンバ関数

money_put ファセットを破棄します。
(protected メンバ関数)
[virtual]
通貨値をフォーマットし、出力ストリームに書き込みます。
(仮想保護メンバ関数) [編集]

[編集]

#include <iomanip>
#include <iostream>
#include <iterator>
#include <locale>
 
int main()
{
    // using the I/O manipulator
    std::cout.imbue(std::locale("en_US.UTF-8"));
    std::cout << "American locale: "
              << std::showbase << std::put_money(12345678.9) << '\n';
 
    // using the facet directly
    std::cout.imbue(std::locale("de_DE.UTF-8"));
    std::cout << "German locale: ";
    auto& f = std::use_facet<std::money_put<char>>(std::cout.getloc());
    f.put({std::cout}, false, std::cout, std::cout.fill(), 12345678.9);
    std::cout << '\n';
}

出力

American locale: $123,456.79
German locale: 123.456,79 €

[編集] 不具合報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 427 C++98 money_put は、
iostream コンポーネント をインスタンス化できる
文字の要件を満たす
char
wchar_t、およびその他の実装定義
の文字型のみを受け入れることが保証されています。
LWG 2392 C++98 num_put が受け入れることが保証できるのは、
money_put で受け入れられることが保証される、任意の CharT を受け入れることが保証されていました。
実装定義の
文字コンテナ型を受け入れることを保証できます。

[編集] 関連情報

std::money_get および std::money_put によって使用される通貨フォーマットパラメータを定義します。
(クラステンプレート) [編集]
入力文字列シーケンスから通貨値を解析・構築する
(クラステンプレート) [編集]
(C++11)
通貨の値をフォーマットして出力する
(関数テンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)