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