money_get — Klasa
Szablon klasy opisuje obiekt, który może służyć jako aspekt ustawień regionalnych do kontrolowania konwersji sekwencji typu CharType
na wartości pieniężne.
Składnia
template <class CharType, class InputIterator = istreambuf_iterator<CharType>>
class money_get : public locale::facet;
Parametry
Typ char
Typ używany w programie do kodowania znaków w ustawieniach regionalnych.
InputIterator
Typ iteratora, z której funkcje get odczytują swoje dane wejś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_get | Konstruktor dla obiektów typu money_get , które są używane do wyodrębniania wartości liczbowych z sekwencji reprezentujących wartości pieniężne. |
Typedefs
Nazwa typu | opis |
---|---|
char_type | Typ opisujący znak używany przez ustawienie regionalne. |
iter_type | Typ, który opisuje iterator danych wejściowych. |
string_type | Typ opisujący ciąg zawierający znaki typu CharType . |
Funkcje składowe
Funkcja składowa | opis |
---|---|
do_get | Funkcja wirtualna wywoływana w celu wyodrębniania wartości liczbowej z sekwencji znaków, która reprezentuje wartość pieniężną. |
get | Wyodrębnia wartość liczbową z sekwencji znaków, która reprezentuje wartość pieniężną. |
Wymagania
Nagłówek:<ustawienia regionalne>
Przestrzeń nazw: std
money_get::char_type
Typ opisujący znak używany przez ustawienie regionalne.
typedef CharType char_type;
Uwagi
Typ jest synonimem parametru CharType szablonu.
money_get::d o_get
Funkcja wirtualna wywoływana w celu wyodrębniania wartości liczbowej z sekwencji znaków reprezentującej wartość pieniężną.
virtual iter_type do_get(iter_type first,
iter_type last,
bool Intl,
ios_base& Iosbase,
ios_base::iostate& State,
long double& val) const virtual iter_type do_get(iter_type first,
iter_type last,
bool Intl,
ios_base& Iosbase,
ios_base::iostate& State,
string_type& val) const
Parametry
pierwszy
Iterator wejściowy odnoszący się do początku sekwencji, która ma zostać przekonwertowana.
ostatni
Iterator wejściowy odnoszący się do końca sekwencji, która ma zostać przekonwertowana.
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 to wymagane.
Stanowy
Ustawia odpowiednie elementy maski bitów dla stanu strumienia zgodnie z tym, czy operacje zakończyły się pomyślnie, czy nie.
Val
Ciąg przechowującą przekonwertowaną sekwencję.
Wartość zwracana
Iterator wejściowy odnoszący się do pierwszego elementu poza polem danych wejściowych pieniężnych.
Uwagi
Pierwsza wirtualna chroniona funkcja składowa próbuje dopasować elementy sekwencyjne rozpoczynające się na początku w sekwencji [ first
, last
), dopóki nie rozpozna kompletnego, nieistnienego pola wejściowego pieniężnego. Jeśli to pole zakończy się pomyślnie, konwertuje to pole na sekwencję co najmniej jednej cyfry dziesiętnej, opcjonalnie poprzedzonej znakiem minus ( -
), aby reprezentować ilość i przechowuje wynik w string_type wartości obiektu. Zwraca iterator wyznaczający pierwszy element poza polem danych wejściowych pieniężnych. W przeciwnym razie funkcja przechowuje pustą sekwencję w kodzie val i ustawia wartość ios_base::failbit
State. Zwraca iterator wyznaczający pierwszy element poza dowolnym prefiksem prawidłowego pola danych wejściowych pieniężnych. W obu przypadkach, jeśli zwracana wartość jest last
równa , funkcja ustawia wartość ios_base::eofbit
w .State
Druga wirtualna chroniona funkcja składowa zachowuje się tak samo jak pierwsza, z tą różnicą, że w przypadku pomyślnego przekonwertowania opcjonalnej sekwencji cyfr podpisanych na wartość typu long double
i przechowuje tę wartość w wartości val.
Format pola danych wejściowych pieniężnych jest określany przez fac aspektuustawień regionalnych zwróconych przez efektywne wywołanie use_facet<moneypunct<CharType, intl>>( iosbase. getloc).
Szczególnie:
fac. neg_format określa kolejność występowania składników pola.
fac. curr_symbol określa sekwencję elementów, które stanowią symbol waluty.
fac. positive_sign określa sekwencję elementów, które stanowią znak dodatni.
fac. negative_sign określa sekwencję elementów, które stanowią znak ujemny.
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 cyfr ułamkowych.
fac. frac_digits określa liczbę znaczących cyfr ułamkowych po prawej stronie każdego przecinka dziesiętnego. Podczas analizowania kwoty pieniężnej z większą liczbie cyfr ułamkowych niż są wywoływane przez
frac_digits
metodę ,do_get
zatrzymuje analizowanie po użyciu maksymalniefrac_digits
znaków.
Jeśli ciąg znaku ( fac. negative_sign
lub fac. positive_sign
) ma więcej niż jeden element, tylko pierwszy element jest zgodny, gdy element jest równy money_base::sign pojawia się we wzorcu formatu ( fac. neg_format
). Wszystkie pozostałe elementy są dopasowywane na końcu pola wejściowego pieniężnego. Jeśli żaden ciąg nie ma pierwszego elementu, który pasuje do następnego elementu w polu danych wejściowych pieniężnych, ciąg znaku jest traktowany jako pusty, a znak jest dodatni.
Jeśli iosbase. flags & showbase jest nonzero, fac ciągu. curr_symbol
musi odpowiadać miejscu, w którym element jest równy money_base::symbol jest wyświetlany we wzorcu formatu. W przeciwnym razie, jeśli money_base::symbol występuje na końcu wzorca formatu, a jeśli żadne elementy ciągu znaku nie zostaną dopasowane, symbol waluty nie jest zgodny. W przeciwnym razie symbol waluty jest opcjonalnie dopasowany.
Jeśli nie ma wystąpień fac. thousands_sep
występuje w części wartości pola wejściowego pieniężnego (gdzie element równy money_base::value pojawia się we wzorcu formatu), nie nakłada się żadnego ograniczenia grupowania. W przeciwnym razie wszelkie ograniczenia grupowania nałożone przez fac. Grupowanie jest wymuszane. Zwróć uwagę, że wynikowa sekwencja cyfr reprezentuje liczbę całkowitą, której fac o niskiej kolejności. frac_digits
Cyfry dziesiętne są traktowane po prawej stronie przecinka dziesiętnego.
Dopasowywane jest dowolne odstępy, w których element jest równy money_base::space w wzorcu formatu, jeśli jest wyświetlany inny niż na końcu wzorca formatu. W przeciwnym razie nie jest dopasowywana wewnętrzna biała przestrzeń. Element ch jest uważany za biały znak, jeśli use_facet<ctype<CharType>>( iosbase. getloc). is( ctype_base::space, ch) to true
.
Przykład
Zobacz przykład get, który wywołuje metodę do_get
.
money_get::get
Wyodrębnia wartość liczbową z sekwencji znaków, która reprezentuje wartość pieniężną.
iter_type get(iter_type first,
iter_type last,
bool Intl,
ios_base& Iosbase,
ios_base::iostate& State,
long double& val) const;
iter_type get(iter_type first,
iter_type last,
bool Intl,
ios_base& Iosbase,
ios_base::iostate& State,
string_type& val) const;
Parametry
pierwszy
Iterator wejściowy odnoszący się do początku sekwencji, która ma zostać przekonwertowana.
ostatni
Iterator wejściowy odnoszący się do końca sekwencji, która ma zostać przekonwertowana.
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
Stanowy
Ustawia odpowiednie elementy maski bitów dla stanu strumienia zgodnie z tym, czy operacje zakończyły się pomyślnie.
Val
Ciąg przechowującą przekonwertowaną sekwencję.
Wartość zwracana
Iterator wejściowy odnoszący się do pierwszego elementu poza polem danych wejściowych pieniężnych.
Uwagi
Obie funkcje składowe zwracają do_get(first, last, Intl, Iosbase, State, val)
.
Przykład
// money_get_get.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
using namespace std;
int main( )
{
locale loc( "german_germany" );
basic_stringstream< char > psz;
psz << use_facet<moneypunct<char, 1> >(loc).curr_symbol() << "-1.000,56";
basic_stringstream< char > psz2;
psz2 << "-100056" << use_facet<moneypunct<char, 1> >(loc).curr_symbol();
ios_base::iostate st = 0;
long double fVal;
psz.flags( psz.flags( )|ios_base::showbase );
// Which forced the READING the currency symbol
psz.imbue(loc);
use_facet < money_get < char > >( loc ).
get( basic_istream<char>::_Iter( psz.rdbuf( ) ),
basic_istream<char>::_Iter( 0 ), true, psz, st, fVal );
if ( st & ios_base::failbit )
cout << "money_get(" << psz.str( ) << ", intl = 1) FAILED"
<< endl;
else
cout << "money_get(" << psz.str( ) << ", intl = 1) = "
<< fVal/100.0 << endl;
use_facet < money_get < char > >( loc ).
get(basic_istream<char>::_Iter(psz2.rdbuf( )),
basic_istream<char>::_Iter(0), false, psz2, st, fVal);
if ( st & ios_base::failbit )
cout << "money_get(" << psz2.str( ) << ", intl = 0) FAILED"
<< endl;
else
cout << "money_get(" << psz2.str( ) << ", intl = 0) = "
<< fVal/100.0 << endl;
};
money_get::iter_type
Typ, który opisuje iterator danych wejściowych.
typedef InputIterator iter_type;
Uwagi
Typ jest synonimem parametru szablonu InputIterator.
money_get::money_get
Konstruktor dla obiektów typu money_get
, które są używane do wyodrębniania wartości liczbowych z sekwencji reprezentujących wartości pieniężne.
explicit money_get(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 przy użyciu ustawień regionalnych::facet(_Refs).
money_get::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.
Zobacz też
<ustawienia regionalne>
facet, klasa
Bezpieczeństwo wątku w standardowej bibliotece C++