Sdílet prostřednictvím


num_get::get

Číselná nebo logická hodnota extrahuje z posloupnost znaků.

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
    Začátek rozsahu znaků, ze které chcete číst číslo.

  • _Last
    Konec rozsahu znaků, ze které chcete číst číslo.

  • _Iosbase
    Ios_base jehož příznaky se používají převod.

  • _State
    Státu, na které failbit (viz ios_base::iostate) je přidána při selhání.

  • _Val
    Hodnota, která byla přečtena.

Vrácená hodnota

Iterační po hodnota byla přečtena.

Poznámky

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

První virtuální chráněné členské funkce se pokusí vyhledat sekvenční prvků počínaje první v pořadí [_First, _Last) dokud byla uznána úplnou, neprázdné celé vstupní pole.Pokud úspěšný, převede toto pole na ekvivalentní hodnotu jako typ dlouhý a uloží výsledek do _Val.Vrátí iterátoru jmenování prvního prvku za číselné vstupní pole.Jinak funkce ukládá nic v _Val a ios_base::failbit v _stavu.Vrátí iterátoru jmenování prvního prvku mimo jakékoli předpony vstupní pole platné celé číslo.V případě, pokud je vrácená hodnota rovná se poslední, nastaví funkci ios_base::eofbit v _State.

Vstupní pole integer je převeden podle stejných pravidel používá pro porovnávání a převod řadu funkcí skenování char prvky ze souboru.Každé takové char prvek považován za mapovat na odpovídající prvek typu CharType mapováním jednoduchý 1: 1.Specifikace převodu rovnocenné kontroly se stanoví takto:

  • Pokud iosbase. příznaky & ios_base::basefield== ios_base::ZZÚ, specifikaci převodu je lo.

  • Pokud iosbase.flags & ios_base::basefield == ios_base::hex, specifikaci převodu je lx.

  • Pokud iosbase.flags & ios_base::basefield == 0, specifikace převodu je li.

  • Jinak je převod specifikace ld.

Formát vstupní pole integer je dále určena Podmínka národního prostředífac vrácený voláním use_facet <numpunct<Elem> (iosbase.getloc).Konkrétně:

  • fac. seskupení určuje způsob seskupování číslic nalevo od jakékoli desetinné čárky.

  • fac. thousands_sep určuje pořadí, který odděluje skupiny číslic nalevo desetinnou.

Pokud žádné výskyty fac.thousands_sep dojít v číselné vstupní pole je uloženo žádné omezení seskupení.Jinak omezeními seskupení zavedených fac. seskupení je vynuceno a oddělovače jsou odstraněny dříve, než dojde k převodu skenování.

Druhá funkce virtuální chráněný člen:

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

chová stejně jako první, s výjimkou, že nahradí specifikace převodu ld s lu.Pokud úspěšný, převádí číselné vstupní pole pro hodnotu typu unsigned long a uloží hodnotu do _Val.

Třetí funkce virtuální chráněný člen:

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

chová stejně jako první, s výjimkou, že se pokusí vyhledat kompletní, neprázdné plovoucí vstupní pole.fac. decimal_point určuje pořadí oddělující číslic celé číslo od zlomek číslic.Specifikátor rovnocenné kontroly převodu je lf.

Čtvrté virtuální chráněné členské funkce:

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

chová stejně třetí, je převod specifikátor rovnocenné prohledávání Lf.

Pátý virtuální chráněné členské funkce:

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

chová stejně první, je převod specifikátor rovnocenné prohledávání p.

Šestý virtuální chráněné členské funkce:

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

chová stejně jako první, s výjimkou, že se pokusí vyhledat kompletní, neprázdné vstupní pole boolean.Pokud úspěšný převádí vstupní pole Boolean hodnotu typu bool a uloží hodnotu do _Val.

Vstupní pole boolean trvá dvě formy.Pokud iosbase. příznaky & ios_base::boolalpha je false, je stejný jako vstupní pole integer, kromě toho, že převedené hodnoty musí být buď 0 (pro false) nebo 1 (pro true).Pořadí jinak, musí odpovídat buď fac.falsename (for false), or fac.truename (for true).

Příklad

// 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;
}

Výsledek

.
money_get( ) = -1000.56

Požadavky

Záhlaví: <locale>

Obor názvů: std

Viz také

Referenční dokumentace

num_get Class