次の方法で共有


money_put クラス

このクラス テンプレートは、通貨値から CharType 型のシーケンスへの変換を制御するためにロケール ファセットとして使用できるオブジェクトを表します。

構文

template <class CharType,
    class OutputIterator = ostreambuf_iterator<CharType>>
class money_put : public locale::facet;

パラメーター

CharType
ロケールの文字をエンコードするためにプログラム内で使用される型。

OutputIterator
通貨の put 関数が出力を書き込む反復子の型。

解説

すべてのロケールのファセットと同様、静的オブジェクト ID に最初に格納されている値は 0 です。 格納されている値に初めてアクセスしようとすると、id に一意の正の値が格納されます。

コンストラクター

コンストラクター 説明
money_put money_put 型のオブジェクトのコンストラクター。

Typedefs

型名 説明
char_type ロケールによって使用される文字を表すために使用される型。
iter_type 出力反復子を表す型。
string_type CharType 型の文字を格納する文字列を表す型。

メンバー関数

メンバー関数 説明
do_put 通貨値を表す文字シーケンスから数値または文字列を抽出するために呼び出される仮想関数。
put 数値または文字列を通貨値を表す文字シーケンスに変換します。

要件

ヘッダー: <locale>

名前空間: std

money_put::char_type

ロケールによって使用される文字を表すために使用される型。

typedef CharType char_type;

解説

この型は、テンプレート パラメーター CharType のシノニムです。

money_put::d o_put

通貨値を表す文字シーケンスから数値または文字列を抽出するために呼び出される仮想関数。

virtual iter_type do_put(
    iter_type next,
    bool _Intl,
    ios_base& _Iosbase,
    CharType _Fill,
    const string_type& val) const;

virtual iter_type do_put(
    iter_type next,
    bool _Intl,
    ios_base& _Iosbase,
    CharType _Fill,
    long double val) const;

パラメーター

次へ
挿入された文字列の先頭の要素を示す反復子。

_国際 空港
シーケンスで期待される通貨記号の種類を示すブール値。国際通貨の場合は true、国内通貨の場合は false

_Iosbase
書式設定フラグ。これが設定されている場合、通貨記号は省略可能です。それ以外の場合は必須です

_Fill
スペースに使用される文字。

val
変換される文字列オブジェクト。

戻り値

生成される最後の要素を 1 つ超える位置を示す出力反復子。

解説

1 番目のプロテクト仮想メンバー関数は、next 以降の連続した要素を生成し、string_type オブジェクトval から通貨出力フィールドを生成します。 val によって制御されるシーケンスは、1 桁以上の 10 進数字で開始している必要があり (必要に応じて頭にマイナス記号 (-) が付く)、これで値が示されます。 関数は、生成された通貨出力フィールドを超える先頭の要素を指す反復子を返します。

2 番目のプロテクト仮想メンバー関数は 1 番目と同様に動作します。ただし、最初に val を 10 進数字のシーケンス (必要に応じて頭にマイナス記号が付く) に実質的に変換し、その後でこのシーケンスを上記のように変換します。

通貨出力フィールドの形式は、(有効な) 呼び出しuse_facet<moneypunct<CharTypeintl>>( iosbaseによって返されるlocale ファセットによって決まります。getloc)。

具体的には、次のように使用します。

  • fac. pos_format は、フィールドのコンポーネントが負以外の値に対して生成される際の順序を決定します。

  • fac. neg_format は、フィールドのコンポーネントが負の値に対して生成される際の順序を決定します。

  • fac. curr_symbol は、通貨記号用に生成する要素のシーケンスを決定します。

  • fac. positive_sign は、正の符号用に生成する要素のシーケンスを決定します。

  • fac. negative_sign は、負の符号用に生成する要素のシーケンスを決定します。

  • fac. grouping は、小数点の左側の数字をグループ化する方法を決定します。

  • fac. thousands_sep は、小数点の左側にある数字のグループを区切る要素を決定します。

  • fac. decimal_point は、整数桁と小数桁を区切る要素を決定します。

  • fac. frac_digits は、小数点の右側にある有効小数桁の数を決定します。

符号文字列 ( fac. negative_sign または fac. positive_sign) に複数の要素がある場合は、最初の要素のみが生成され、 money_base::sign は書式パターン ( fac. neg_format または fac) に表示されます pos_format。 残りの要素は、通貨出力フィールドの末尾に生成されます。

iosbase. flags & showbase は 0 以外で、文字列 faccurr_symbol は、money_base::symbol と等しい要素が書式パターンに出現している場合に生成されます。 それ以外の場合、通貨記号は生成されません。

グループ化の制約が fac. grouping (その最初の要素の値はCHAR_MAX)、 facのインスタンスはありません。 thousands_sep のインスタンスは通貨出力フィールドの値部分に生成されません (この場合、money_base::value に等しい要素が書式パターンに出現しています)。 fac. frac_digits がゼロの場合、fac. decimal_point のインスタンスは 10 進数字の後に生成されません。 それ以外の場合、結果として得られる通貨出力フィールドでは、小数点の右側に下位の fac. frac_digits 10 進数字が配置されます。

数値出力フィールドについては、埋め込みが発生します。ただし、iosbase. flags & iosbaseinternal が 0 以外の場合、内部の埋め込みは money_base::space に等しい要素が書式パターンに出現している場所に生成されます (出現している場合)。 それ以外の場合、内部の埋め込みは生成されたシーケンスの前に発生します。 埋め込み文字は fill です。

関数は iosbase. width(0) を呼び出して、フィールド幅をゼロにリセットします。

put の例 (仮想メンバー関数が put で呼び出される) を参照してください。

money_put::iter_type

出力反復子を表す型。

typedef OutputIterator iter_type;

解説

この型は、テンプレート パラメーター OutputIterator のシノニムです。

money_put::money_put

money_put 型のオブジェクトのコンストラクター。

explicit money_put(size_t _Refs = 0);

パラメーター

_Refs
オブジェクトのメモリ管理の種類を指定するために使用する整数値。

解説

_Refs パラメーターの可能な値とその重要性は次のとおりです。

  • 0: オブジェクトの有効期間はそれが含まれるロケールによって管理されます。

  • 1: オブジェクトの有効期間を手動で管理する必要があります。

  • > 1: これらの値は定義されていません。

デストラクターが保護されているため、利用できる直接的な例はありません。

コンストラクターは、locale::facet( _Refs) を使用して、その基本オブジェクトを初期化します。

money_put::p ut

数値または文字列を通貨値を表す文字シーケンスに変換します。

iter_type put(
    iter_type next,
    bool _Intl,
    ios_base& _Iosbase,
    CharType _Fill,
    const string_type& val) const;

iter_type put(
    iter_type next,
    bool _Intl,
    ios_base& _Iosbase,
    CharType _Fill,
    long double val) const;

パラメーター

次へ
挿入された文字列の先頭の要素を示す反復子。

_国際 空港
シーケンスで期待される通貨記号の種類を示すブール値。国際通貨の場合は true、国内通貨の場合は false

_Iosbase
書式設定フラグ。これが設定されている場合、通貨記号は省略可能です。それ以外の場合は必須です

_Fill
スペースに使用される文字。

val
変換される文字列オブジェクト。

戻り値

生成される最後の要素を 1 つ超える位置を示す出力反復子。

解説

どちらのメンバー関数も do_put( next, _Intl, _Iosbase, _Fill, val) を返します。

// money_put_put.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>

int main()
{
    std::locale loc( "german_germany" );
    std::basic_stringstream<char> psz;

    psz.imbue(loc);
    psz.flags(psz.flags() | std::ios_base::showbase); // force the printing of the currency symbol
    std::use_facet<std::money_put<char> >(loc).put(std::basic_ostream<char>::_Iter(psz.rdbuf()), true, psz, ' ', 100012);
    if (psz.fail())
        std::cout << "money_put() FAILED" << std::endl;
    else
        std::cout << "money_put() = \"" << psz.rdbuf()->str() << "\"" << std::endl;
}
money_put() = "EUR1.000,12"

money_put::string_type

CharType 型の文字を格納する文字列を表す型。

typedef basic_string<CharType, Traits, Allocator> string_type;

解説

この型は、オブジェクトにソース シーケンスからの要素のシーケンスを格納できるクラス テンプレート basic_string の特殊化を表します。

関連項目

<locale>
facet クラス
C++ 標準ライブラリ内のスレッド セーフ