money_put — Klasa
Szablon klasy opisuje obiekt, który może służyć jako aspekt ustawień regionalnych do kontrolowania konwersji wartości pieniężnych na sekwencje typu CharType
.
Składnia
template <class CharType,
class OutputIterator = ostreambuf_iterator<CharType>>
class money_put : public locale::facet;
Parametry
Typ char
Typ używany w programie do kodowania znaków w ustawieniach regionalnych.
OutputIterator
Typ iteratora, do którego funkcje pieniężne put zapisują swoje dane wyjściowe.
Uwagi
Podobnie jak w przypadku dowolnego zestawu reguł ustawień regionalnych, identyfikator obiektu statycznego ma początkową przechowywaną wartość zero. Pierwsza próba uzyskania dostępu do przechowywanej wartości przechowuje unikatową wartość dodatnią w identyfikatorze.
Konstruktory
Konstruktor | opis |
---|---|
money_put | Konstruktor dla obiektów typu money_put . |
Typedefs
Nazwa typu | opis |
---|---|
char_type | Typ opisujący znak używany przez ustawienie regionalne. |
iter_type | Typ, który opisuje iterator danych wyjściowych. |
string_type | Typ opisujący ciąg zawierający znaki typu CharType . |
Funkcje składowe
Funkcja składowa | opis |
---|---|
do_put | Funkcja wirtualna wywoływana w celu przekonwertowania liczby lub ciągu na sekwencję znaków, która reprezentuje wartość pieniężną. |
kłaść | Konwertuje liczbę lub ciąg na sekwencję znaków, która reprezentuje wartość pieniężną. |
Wymagania
Nagłówek:<ustawienia regionalne>
Przestrzeń nazw: std
money_put::char_type
Typ opisujący znak używany przez ustawienie regionalne.
typedef CharType char_type;
Uwagi
Typ jest synonimem parametru CharType szablonu.
money_put::d o_put
Funkcja wirtualna wywoływana w celu przekonwertowania liczby lub ciągu na sekwencję znaków, która reprezentuje wartość pieniężną.
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
następny
Iterator odnoszący się do pierwszego elementu wstawionego ciągu.
_Intl
Wartość logiczna wskazująca typ symbolu waluty oczekiwany w sekwencji: true
jeśli jest to wartość międzynarodowa, false
jeśli jest to wartość krajowa.
_Iosbase
Flaga formatu, która po ustawieniu wskazuje, że symbol waluty jest opcjonalny; w przeciwnym razie jest wymagane
_Wypełnić
Znak, który jest używany do odstępów.
Val
Obiekt ciągu do przekonwertowania.
Wartość zwracana
Iterator danych wyjściowych adresuje pozycję jedną poza ostatnim wygenerowanym elementem.
Uwagi
Pierwsza wirtualna chroniona funkcja składowa generuje elementy sekwencyjne rozpoczynające się od momentu utworzenia pola wyjściowego pieniężnego z wartości obiektu string_type. Sekwencja kontrolowana przez wartość musi zaczynać się od co najmniej jednej cyfry dziesiętnej, opcjonalnie poprzedzonej znakiem minus (-), który reprezentuje kwotę. Funkcja zwraca iterator wyznaczający pierwszy element poza wygenerowanym polem danych wyjściowych pieniężnych.
Druga wirtualna chroniona funkcja składowa zachowuje się tak samo jak pierwsza, z tą różnicą, że skutecznie konwertuje wartość na sekwencję cyfr dziesiętnych, opcjonalnie poprzedzoną znakiem minus, a następnie konwertuje tę sekwencję tak jak powyżej.
Format pola danych wyjściowych pieniężnych jest określany przez fac aspektów ustawień regionalnych zwróconych przez wywołanie (skuteczne) use_facet<moneypunct<CharType, intl>>( iosbase. getloc).
Szczególnie:
fac. pos_format określa kolejność, w jakiej składniki pola są generowane dla wartości nienależącej.
fac. neg_format określa kolejność generowania składników pola dla wartości ujemnej.
fac. curr_symbol określa sekwencję elementów do wygenerowania dla symbolu waluty.
fac. positive_sign określa sekwencję elementów do wygenerowania dla znaku dodatniego.
fac. negative_sign określa sekwencję elementów do wygenerowania dla znaku ujemnego.
fac. grupowanie określa sposób grupowania cyfr po lewej stronie dowolnego punktu dziesiętnego.
fac. thousands_sep określa element, który oddziela grupy cyfr po lewej stronie każdego przecinka dziesiętnego.
fac. decimal_point określa element, który oddziela cyfry całkowite od dowolnych cyfr ułamkowych.
fac. frac_digits określa liczbę znaczących cyfr ułamkowych po prawej stronie każdego przecinka dziesiętnego.
Jeśli ciąg znaku ( fac. negative_sign
lub fac. positive_sign
) zawiera więcej niż jeden element, generowany jest tylko pierwszy element, w którym element jest równy money_base::sign w wzorcu formatu (fac. neg_format
lub fac). pos_format
). Wszystkie pozostałe elementy są generowane na końcu pola danych wyjściowych pieniężnych.
Jeśli iosbase. flags & showbase jest nonzero, fac ciągu. curr_symbol
Jest generowany, gdzie element jest równy money_base::symbol jest wyświetlany we wzorcu formatu. W przeciwnym razie nie jest generowany żaden symbol waluty.
Jeśli żadne ograniczenia grupowania nie są nakładane przez fac. grupowanie (jego pierwszy element ma wartość CHAR_MAX), a następnie nie ma wystąpień fac. thousands_sep
są generowane w części wartości pola danych wyjściowych pieniężnych (gdzie element jest równy money_base::value jest wyświetlany we wzorcu formatu). W przypadku fac. frac_digits
jest zero, a następnie nie ma wystąpienia fac. decimal_point
jest generowany po cyfrach dziesiętnych. W przeciwnym razie wynikowe pole danych wyjściowych pieniężnych umieszcza wartość fac o niskim zamówieniu. frac_digits
cyfry dziesiętne po prawej stronie przecinka dziesiętnego.
Wypełnienie występuje tak jak w przypadku dowolnego pola danych wyjściowych liczbowych, z tą różnicą, że jeśli system iosbase. flagi i iosbase. internal jest nonzero, wszystkie wewnętrzne dopełnienie jest generowane, gdzie element równy money_base::space pojawia się we wzorcu formatu, jeśli jest wyświetlany. W przeciwnym razie dopełnienie wewnętrzne występuje przed wygenerowaną sekwencją. Znak wypełnienia jest wypełniany.
Funkcja wywołuje bazę danych iosbase. width(0) w celu zresetowania szerokości pola do zera.
Przykład
Zobacz przykład put, gdzie funkcja wirtualnego elementu członkowskiego jest wywoływana przez put.
money_put::iter_type
Typ, który opisuje iterator danych wyjściowych.
typedef OutputIterator iter_type;
Uwagi
Typ jest synonimem parametru szablonu OutputIterator.
money_put::money_put
Konstruktor dla obiektów typu money_put
.
explicit money_put(size_t _Refs = 0);
Parametry
_Bibl.
Wartość całkowita używana do określania typu zarządzania pamięcią dla obiektu.
Uwagi
Możliwe wartości parametru _Refs i ich istotności to:
0: okres istnienia obiektu jest zarządzany przez ustawienia regionalne, które go zawierają.
1: okres istnienia obiektu musi być zarządzany ręcznie.
> 1: te wartości nie są zdefiniowane.
Nie są możliwe żadne bezpośrednie przykłady, ponieważ destruktor jest chroniony.
Konstruktor inicjuje obiekt podstawowy za pomocą ustawień regionalnych::facet( _Refs
).
money_put::p ut
Konwertuje liczbę lub ciąg na sekwencję znaków, która reprezentuje wartość pieniężną.
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
następny
Iterator odnoszący się do pierwszego elementu wstawionego ciągu.
_Intl
Wartość logiczna wskazująca typ symbolu waluty oczekiwany w sekwencji: true
jeśli jest to wartość międzynarodowa, false
jeśli jest to wartość krajowa.
_Iosbase
Flaga formatu, która po ustawieniu wskazuje, że symbol waluty jest opcjonalny; w przeciwnym razie jest wymagane
_Wypełnić
Znak, który jest używany do odstępów.
Val
Obiekt ciągu do przekonwertowania.
Wartość zwracana
Iterator danych wyjściowych adresuje pozycję jedną poza ostatnim wygenerowanym elementem.
Uwagi
Obie funkcje składowe zwracają do_put( , , _Intl
_Iosbase
, _Fill
, val
). next
Przykład
// 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 opisujący ciąg zawierający znaki typu CharType
.
typedef basic_string<CharType, Traits, Allocator> string_type;
Uwagi
Typ opisuje specjalizację szablonu klasy basic_string , którego obiekty mogą przechowywać sekwencje elementów z sekwencji źródłowej.
Zobacz też
<ustawienia regionalne>
facet, klasa
Bezpieczeństwo wątku w standardowej bibliotece C++