Udostępnij za pośrednictwem


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