std::money_put
From cppreference.com
| ヘッダー <locale> で定義 |
||
| template< class CharT, |
||
クラス std::money_put は、通貨値を文字列としてフォーマットするための規則をカプセル化します。標準 I/O マニピュレータ std::put_money は、I/O ストリームのロケールの std::money_put ファセットを使用します。
継承図
std::money_put の特殊化が標準ライブラリによって提供されることが保証されていない場合(下記参照)、その put() および do_put() の動作は指定どおりに保証されません。
目次 |
[編集] 特殊化
標準ライブラリは、以下の特殊化を提供することが保証されています(これらは あらゆるロケールオブジェクトによって実装される必要があります)。
| ヘッダー
<locale> で定義 | |
| std::money_put<char> | 通貨値のナローストリング表現を作成します。 |
| std::money_put<wchar_t> | 通貨値のワイドストリング表現を作成します。 |
さらに、標準ライブラリは、以下の型要件を満たすすべての特殊化を提供することも保証されています。
-
CharTは以下のいずれかです。- char,
- wchar_t、および
- 実装定義の 文字コンテナ型 で、iostream コンポーネント をインスタンス化できる文字の要件を満たすもの。
-
OutputItは LegacyOutputIterator の要件を満たさなければなりません。
[編集] ネストされた型
| 型 | 定義 |
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) |
通貨の値をフォーマットして出力する (関数テンプレート) |