Udostępnij za pośrednictwem


num_get::get

Wyodrębnia wartości liczbowych lub logicznych z sekwencji znaków.

iter_type get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    bool& _Val
) const;
iter_type get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    unsigned short& _Val
) const;
iter_type get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    unsigned int& _Val
) const;
iter_type get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    long& _Val
) const;
iter_type get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    unsigned long& _Val
) const;
iter_type get(
    iter_type _First, 
    iter_type _Last,
    ios_base& _Iosbase, 
    ios_base::iostate& _State,
    long long& _Val
) const;
iter_type get(
    iter_type _First, 
    iter_type _Last,
    ios_base& _Iosbase, 
    ios_base::iostate& _State,
    unsigned long long& _Val
) const;
iter_type get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    float& _Val
) const;
iter_type get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    double& _Val
) const;
iter_type get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    long double& _Val
) const;
iter_type get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    void *& _Val
) const;

Parametry

  • _First
    Początek zakresu znaków, z którego można odczytać liczbę.

  • _Last
    Koniec zakresu znaków, z którego odczytanie liczby.

  • _Iosbase
    Ios_base których flagi są używane przez konwersji.

  • _State
    Państwo, do którego failbit (zobacz ios_base::iostate) dodaje się po awarii.

  • _Val
    Wartość, która została odczytana.

Wartość zwracana

Iteratora po przeczytaniu wartość.

Uwagi

All member functions return do_get(_First, _Last, _Iosbase, _State, _Val).

Pierwsza funkcja wirtualnego chroniony członek próbuje dopasować kolejne elementy, począwszy od pierwszej sekwencji [_First, _Last) dopóki nie rozpoznał kompletne, całkowitą niepusty wejściowe pole.Jeśli pomyślne, to konwertuje to pole jej równoważnej wartości, jako typ long i zapisuje wynik w _Val.Zwraca iterację wyznaczające pierwszy element poza numeryczne pole wejściowe.W przeciwnym wypadku funkcja przechowuje nic w _Val i ios_base::failbit w _Państwo.Zwraca iterację wyznaczające pierwszy element poza każdy prefiks pole wejściowe prawidłową liczbą całkowitą.W przypadku, jeśli wartość zwracana jest równe ostatniego, zestawy funkcji ios_base::eofbit w _State.

Pole wejściowe całkowitą jest konwertowany na takie same zasady stosowane przez funkcje skanowania dopasowywania i konwersji szeregu char elementów z pliku.Każde takie char mapowania do elementu typu równoważne zakłada, że element CharType przez mapowanie proste, jeden do jednego.Specyfikacja konwersji równoważne skanowania jest ustalana w następujący sposób:

  • Jeśli iosbase. flagi & ios_base::basefield== ios_base::KTZ, specyfikacja konwersji jest lo.

  • Jeśli iosbase.flags & ios_base::basefield == ios_base::hex, specyfikacja konwersji jest lx.

  • Jeśli iosbase.flags & ios_base::basefield == 0, specyfikacja konwersji jest li.

  • W przeciwnym razie specyfikacja konwersji jest ld.

Format pola wejściowego całkowitą dalsze ustalona przez locale aspektfac zwrócony przez wywołanie use_facet <numpunct<Elem> (iosbase.getloc).W szczególności:

  • fac. grupowania określa sposób grupowania cyfr po lewej stronie dowolnego przecinka dziesiętnego.

  • fac. thousands_sep Określa sekwencję oddzielający grup cyfr po lewej stronie dowolnego przecinka dziesiętnego.

Jeśli nie wystąpienia fac.thousands_sep występują w numeryczne pole wejściowe jest nałożone nie ograniczenie grupowania.W przeciwnym razie grupowania ograniczenia nałożone przez fac. grupowania jest wymuszana i separatory są usuwane, zanim nastąpi konwersja skanowania.

Druga funkcja wirtualnego chroniony członek:

virtual iter_type do_get(iter_type _First, iter_type _Last,
    ios_base& _Iosbase, ios_base::iostate& _State,
        unsigned long& _Val) const;

zachowuje się tak samo, jak pierwszy, chyba że zastępuje ona specyfikacja konwersji ld z lu.Jeśli pomyślne, konwertowane numeryczne pole wejściowe na wartości typu unsigned long i zapisanie tej wartości w _Val.

Trzecią funkcję wirtualnych chroniony członek:

virtual iter_type do_get(iter_type _First, iter_type _Last,
    ios_base& _Iosbase, ios_base::iostate& _State,
        double& _Val) const;

działa tak samo, jak pierwszy, chyba że próbuje dopasować kompletne, niepuste pole wejściowe zmiennoprzecinkowych.fac. decimal_point Określa sekwencję oddzielający cyfr całkowitą od cyfry ułamka.Specyfikator konwersji równoważne skanowania jest lf.

Czwarty funkcji wirtualnych chroniony członek:

virtual iter_type do_get(iter_type _First, iter_type _Last,
    ios_base& _Iosbase, ios_base::iostate& _State,
        long double& _Val) const;

działa tak samo trzeci, z wyjątkiem, że specyfikatora konwersji równoważne skanowania Lf.

Funkcja wirtualnego chroniony członek piąty:

virtual iter_type do_get(iter_type _First, iter_type _Last,
    ios_base& _Iosbase, ios_base::iostate& _State,
        void *& _Val) const;

działa tak samo pierwszy, z wyjątkiem, że specyfikatora konwersji równoważne skanowania p.

Szósty funkcji wirtualnych chroniony członek:

virtual iter_type do_get(iter_type _First, iter_type _Last,
    ios_base& _Iosbase, ios_base::iostate& _State,
        bool& _Val) const;

działa tak samo, jak pierwszy, chyba że próbuje dopasować kompletne, niepuste pole wprowadzania wartości logicznych.Jeżeli pomyślnie go konwertuje wejściowe pole logiczne wartości typu bool i zapisanie tej wartości w _Val.

Pole wejściowe logiczne przyjmuje jedną z dwóch form.Jeśli iosbase. flagi & ios_base::boolalpha jest false, jest taki sam, jak pole wejściowe całkowitą, z wyjątkiem, że konwertowaną wartość musi być albo 0 (dla false) lub 1 (dla true).W przeciwnym razie musi odpowiadać sekwencji albo fac.falsename (for false), or fac.truename (for true).

Przykład

// num_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, psz2;
   psz << "-1000,56";

   ios_base::iostate st = 0;
   long double fVal;
   cout << use_facet <numpunct <char> >(loc).thousands_sep( ) << endl;


   psz.imbue( loc );
   use_facet <num_get <char> >
   (loc).get( basic_istream<char>::_Iter( psz.rdbuf( ) ),
           basic_istream<char>::_Iter(0), psz, st, fVal );

   if ( st & ios_base::failbit )
      cout << "money_get( ) FAILED" << endl;
   else
      cout << "money_get( ) = " << fVal << endl;
}

Dane wyjściowe

.
money_get( ) = -1000.56

Wymagania

Nagłówek: <locale>

Obszar nazw: std

Zobacz też

Informacje

num_get Class