Freigeben über


num_get::get

Extrahiert ein numerisches oder einen booleschen Wert aus einer Zeichenfolge.

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;

Parameter

  • _First
    Der Anfang des Bereichs von denen der Zeichen, um die Zahl zu lesen.

  • _Last
    Das Ende des Bereichs von denen der Zeichen, um die Zahl zu lesen.

  • _Iosbase
    ios_base, dessen Flags durch die Konvertierung verwendet werden.

  • _State
    Der Zustand, zu dem failbit (siehe) ios_base::iostate nach Fehler hinzugefügt wird.

  • _Val
    Der gelesene Wert.

Rückgabewert

Der Iterator nach dem Wert ist gelesen wurde.

Hinweise

Alle Memberfunktionen geben do_get(_First, _Last, _Iosbase, _State, _Val) zurück.

Die erste geschützte virtuelle Memberfunktion versucht, die zuerst sequenziellen Elementen entsprechen, die in der Sequenz [_First_Last) beginnen, bis ein vollständiges, nicht leeren ganze Eingabefeld erkannt hat.Wenn erfolgreich, konvertiert sie dieses Feld in den entsprechenden - Wert als Typ long und speichert das Ergebnis in _Val.Sie gibt einen Iterator zurück, der das erste Element über dem numerischen Eingabefeld hinaus festgelegt wird.Andernfalls speichert die Funktion nichts in _Val und legt ios_base::failbit im _State fest.Sie gibt einen Iterator zurück, der das erste Element zu jedem Präfix eines gültigen ganzzahligen Eingabefelds hinaus festgelegt wird.In jedem Fall der Rückgabewert last entspricht, wird die Funktion ios_base::eofbit in _State fest.

Das ganzzahlige Eingabefeld wird durch die gleichen Regeln konvertiert, die von der Überprüfungsfunktionen für Vergleiche und das Konvertieren von char-Elemente aus einer Datei verwendet werden.Die einzelnen char-Element wird angenommen, dass zu einem entsprechenden Element des Typs CharType zuzuordnen, über eine einfache Eins-zu-Eins-Zuordnung.Die entsprechende ÜberprüfungsUmwandlungsangabe wird bestimmt, wie folgt:

  • Wenn iosbase.Flags &. ios_base::basefield == ios_base::Okt, die Umwandlungsangabe ist lo.

  • Wenn iosbase.flags &. ios_base::basefield == ios_base::Hexadezimal, die Umwandlungsangabe lx ist.

  • Wenn iosbase.flags &. ios_base::basefield == 0, die Umwandlungsangabe li ist.

  • Andernfalls ist die Umwandlungsangabe ld.

Das Format des ganzzahligen Eingabefelds ist durch Gebietsschemafacetfac weitere entschlossenes, das durch den Aufruf use_facet <numpunct<Elem> zurückgegeben wird (iosbase.getloc).Dies gilt insbesondere in folgenden Fällen:

  • fac.Gruppieren bestimmt, wie Ziffern auf der linken Seite eines beliebigen Dezimaltrennzeichen gruppiert werden.

  • fac.thousands_sep bestimmt die Reihenfolge, die Zahlengruppen auf der linken Seite eines beliebigen Dezimaltrennzeichen trennt.

Wenn keine Instanzen von fac.thousands_sep treten im Eingabefeld numerischen, keine gruppierende Einschränkung wird auf festgelegt.Andernfalls erlegten alle Gruppenspalten Einschränkungen durch fac auf.Gruppierung wird erzwungen und Trennzeichen werden entfernt, bevor die Überprüfungskonvertierung auftritt.

Die zweite geschützte virtuelle Memberfunktion:

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

verhält sich genauso wie das erste, außer dass ersetzt eine Umwandlungsangabe von ld durch lu.Wenn erfolgreich, konvertiert das numerische Eingabefeld in einen Wert vom Typ unsigned long und Speicher, die in _Val bewerten.

Die dritte geschützte virtuelle Memberfunktion:

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

verhält sich genauso wie das erste, außer dass versucht, ein vollständiges, nicht leeren Gleitkommaeingabefeld übereinstimmt.fac.decimal_point bestimmt die Reihenfolge, die die ganzzahligen Ziffern von den Bruchsziffern trennt.Der entsprechende Überprüfungskonvertierungsspezifizierer ist lf.

Die vierte geschützte virtuelle Memberfunktion:

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

verhält sich genauso das dritte, dass der entsprechende Überprüfungskonvertierungsspezifizierer ist Lf.

Die fünfte geschützte virtuelle Memberfunktion:

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

verhält sich genauso das erste, dass der entsprechende Überprüfungskonvertierungsspezifizierer ist p.

Die 6. geschützte virtuelle Memberfunktion:

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

verhält sich genauso wie das erste, außer dass versucht, ein vollständiges, nicht leeren boolesches Eingabefeld übereinstimmt.Wenn erfolgreich es das boolesche Eingabefeld in einen Wert vom Typ bool und Speicher konvertiert, die in _Val bewerten.

Ein boolesches Eingabefeld nimmt eines von zwei Formularen.Wenn iosbase.flags &. ios_base::boolalpha ist false, ist der gleiche wie ein ganzzahliges Eingabefeld, dass der konvertierte Wert muss entweder 0 (für false) oder 1 (für true).Andernfalls muss die Sequenz der einzelnen fac übereinstimmen.falsename (für false) oder fac.truename (für true).

Beispiel

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

Output

.
money_get( ) = -1000.56

Anforderungen

Header: <locale>

Namespace: std

Siehe auch

Referenz

num_get Class