Sdílet prostřednictvím


money_put – třída

Šablona třídy popisuje objekt, který může sloužit jako omezující vlastnost národního prostředí k řízení převodů peněžních hodnot na sekvence typu CharType.

Syntaxe

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

Parametry

CharType
Typ používaný v rámci programu ke kódování znaků v národním prostředí.

OutputIterator
Typ iterátoru, do kterého finanční funkce zapisují svůj výstup.

Poznámky

Stejně jako u omezující vlastnosti národního prostředí má ID statického objektu počáteční uloženou hodnotu nula. První pokus o přístup k uložené hodnotě ukládá jedinečnou kladnou hodnotu v ID.

Konstruktory

Konstruktor Popis
money_put Konstruktor pro objekty typu money_put.

Typedefs

Název typu Popis
char_type Typ, který se používá k popisu znaku používaného národním prostředním.
iter_type Typ, který popisuje výstupní iterátor.
string_type Typ, který popisuje řetězec obsahující znaky typu CharType.

Členské funkce

Členová funkce Popis
do_put Virtuální funkce volaná k převodu buď čísla, nebo řetězce na sekvenci znaků, která představuje finanční hodnotu.
dát Převede buď číslo, nebo řetězec na sekvenci znaků, která představuje finanční hodnotu.

Požadavky

Záhlaví:<národní prostředí>

Obor názvů: std

money_put::char_type

Typ, který se používá k popisu znaku používaného národním prostředním.

typedef CharType char_type;

Poznámky

Typ je synonymem parametru šablony CharType.

money_put::d o_put

Virtuální funkce volaná k převodu buď čísla, nebo řetězce na sekvenci znaků, která představuje finanční hodnotu.

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;

Parametry

další
Iterátor adresuje první prvek vloženého řetězce.

_Intl
Logická hodnota označující typ symbolu měny očekávaný v sekvenci: true pokud mezinárodní, false pokud je vnitrostátní.

_Iosbase
Příznak formátu, který při nastavení označuje, že symbol měny je volitelný; v opačném případě se vyžaduje

_Vyplnit
Znak, který se používá pro mezery.

Val
Řetězcový objekt, který se má převést.

Návratová hodnota

Výstupní iterátor adresuje pozici za posledním vytvořeným prvkem.

Poznámky

První virtuální chráněná členová funkce generuje sekvenční prvky začínající vedle vytvoření peněžního výstupního pole z string_type objekt val. Sekvence řízená hodnotou musí začínat jednou nebo více desetinnými číslicemi, volitelně před znaménkem minus (-), který představuje hodnotu. Funkce vrátí iterátor označující první prvek nad rámec vygenerovaného pole peněžního výstupu.

Druhá virtuální chráněná členová funkce se chová stejně jako první, s tím rozdílem, že v podstatě převede hodnotu na sekvenci desetinných číslic, volitelně před znaménkem mínus a pak převede danou sekvenci jako výše.

Formát peněžního výstupního pole je určen fasetovou fasetou národního prostředí vrácenou (efektivní) voláním use_facet<moneypunct<CharType, intl>>( iosbase. getloc).

Konkrétně:

  • fac. pos_format určuje pořadí, ve kterém jsou součásti pole generovány pro nenegativní hodnotu.

  • fac. neg_format určuje pořadí, ve kterém jsou součásti pole generovány pro zápornou hodnotu.

  • fac. curr_symbol určuje posloupnost prvků, které se mají vygenerovat pro symbol měny.

  • fac. positive_sign určuje posloupnost prvků, které se mají vygenerovat pro kladné znaménko.

  • fac. negative_sign určuje posloupnost prvků, které se mají vygenerovat pro záporné znaménko.

  • fac. seskupení určuje, jak se číslice seskupí nalevo od libovolné desetinné čárky.

  • fac. thousands_sep určuje prvek, který odděluje skupiny číslic vlevo od libovolné desetinné čárky.

  • fac. decimal_point určuje prvek, který odděluje celočíselné číslice od libovolných desetinných míst.

  • fac. frac_digits určuje počet významných desetinných míst vpravo od libovolné desetinné čárky.

Pokud řetězec znaménka (fac. negative_sign nebo fac. positive_sign) má více než jeden prvek, vygeneruje se pouze první prvek, kde se prvek rovná money_base::sign se zobrazí ve formátu (fac. neg_format nebo fac. pos_format). Všechny zbývající prvky se generují na konci pole peněžního výstupu.

Pokud iosbase. flags & showbase is nonzero, the string fac. curr_symbol je generována, kde se prvek rovná money_base::symbol se zobrazí ve vzoru formátu. Jinak se nevygeneruje žádný symbol měny.

Pokud nejsou fac stanovena žádná omezení seskupení. seskupení (jeho první prvek má hodnotu CHAR_MAX), pak žádné instance fac. thousands_sep jsou generovány v hodnotové části pole peněžního výstupu (kde se prvek rovná money_base::value se zobrazí ve formátu). Pokud fac. frac_digits je nula, pak žádná instance fac. decimal_point se generuje za desetinnými číslicemi. Jinak výsledné pole peněžního výstupu umístí facku s nízkým pořadím. frac_digits desetinná čísla napravo od desetinné čárky.

Odsazení se vyskytuje jako u libovolného číselného výstupního pole s tím rozdílem, že pokud iosbase. flags & iosbase. vnitřní je nenulová, všechny vnitřní odsazení se vygenerují, kde se prvek rovná money_base::mezera se zobrazí ve formátu, pokud se zobrazí. V opačném případě dojde k internímu odsazení před vygenerovanou sekvencí. Znak odsazení je vyplněný.

Funkce volá iosbase. width(0) pro resetování šířky pole na nulu.

Příklad

Podívejte se na příklad pro vložení, kde je virtuální členová funkce volána pomocí metody put.

money_put::iter_type

Typ, který popisuje výstupní iterátor.

typedef OutputIterator iter_type;

Poznámky

Typ je synonymem pro outputIterator parametru šablony.

money_put::money_put

Konstruktor pro objekty typu money_put.

explicit money_put(size_t _Refs = 0);

Parametry

_Refs
Celočíselná hodnota použitá k určení typu správy paměti pro objekt.

Poznámky

Možné hodnoty pro parametr _Refs a jejich významnost jsou:

  • 0: Životnost objektu je spravována národními prostředími, které ho obsahují.

  • 1: Životnost objektu musí být spravována ručně.

  • > 1: Tyto hodnoty nejsou definovány.

Nejsou možné žádné přímé příklady, protože destruktor je chráněn.

Konstruktor inicializuje svůj základní objekt s národním prostředím ::facet( _Refs).

money_put::p ut

Převede buď číslo, nebo řetězec na sekvenci znaků, která představuje finanční hodnotu.

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;

Parametry

další
Iterátor adresuje první prvek vloženého řetězce.

_Intl
Logická hodnota označující typ symbolu měny očekávaný v sekvenci: true pokud mezinárodní, false pokud je vnitrostátní.

_Iosbase
Příznak formátu, který při nastavení označuje, že symbol měny je volitelný; v opačném případě se vyžaduje

_Vyplnit
Znak, který se používá pro mezery.

Val
Řetězcový objekt, který se má převést.

Návratová hodnota

Výstupní iterátor adresuje pozici za posledním vytvořeným prvkem.

Poznámky

Obě členské funkce vrací do_put( next, _Intl, _Iosbase, _Fill, ). val

Příklad

// 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

Typ, který popisuje řetězec obsahující znaky typu CharType.

typedef basic_string<CharType, Traits, Allocator> string_type;

Poznámky

Typ popisuje specializaci šablony třídy basic_string , jejichž objekty mohou ukládat sekvence prvků ze zdrojové sekvence.

Viz také

<locale>
facet – třída
Bezpečný přístup z více vláken ve standardní knihovně C++