Freigeben über


num_get::get

Extrahiert ein numerisches oder einen booleschen Wert von 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 von der Konvertierung verwendet werden.

  • _State
    Der Zustand, auf den 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, die versucht sequenziellen Elementen entsprechen zuerst, die in an der Sequenz _First[, _Last) beginnen bis ein vollständiges, nicht leeres ganzzahliges Eingabefeld erkannt hat. Wenn erfolgreich, konvertiert sie dieses Feld in den entsprechenden Wert als Typ long speichert und das Ergebnis in _Val. Sie gibt ein Iterator zurück, der das erste Element über dem numerischen Eingabefeld hinaus festlegen. Andernfalls werden die Funktion keine _Val und ios_base::failbit im _State fest. Sie gibt ein Iterator zurück, der das erste Element in jedem Präfix eines gültigen ganzzahligen Eingabefelds hinaus festlegen. 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 Scanfunktionen für Vergleiche und das Konvertieren von char-Elemente von einer Datei verwendet werden. Die einzelnen char-Element wird angenommen, um zu einem entsprechenden Element des Typs CharType zuzuordnen über eine einfache Eins-zu-Eins-Zuordnung., Die entsprechende ScanUmwandlungsangabe wird bestimmt, wie folgt:

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

  • Wenn == &ios_base::Hexadezimaliosbase.flagsios_base::basefield, die Umwandlungsangabe lx ist.

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

  • Andernfalls ist die Umwandlungsangabe ld.

Das Format eines ganzzahligen Eingabefelds erfolgt in Gebietsschemafacet fac weiter entschlossenes, das durch den Aufruf use_facet <numpunct<Elem>zurückgegebene (iosbase.getloc). Dies gilt insbesondere in folgenden Fällen:

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

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

Wenn keine Instanzen von fac.thousands_sep befinden numerischen im Bearbeitungsfeld, keine gruppierende Einschränkung wird angewendet auf. Andernfalls haben alle Gruppenspalten Einschränkungen über fac auf.Gruppierung wird erzwungen und Trennzeichen werden entfernt, bevor die Scankonvertierung 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 weitgehend wie das erste, allerdings wird ersetzt eine Umwandlungsangabe von ld durch lu. Wenn erfolgreich, konvertiert es das numerische Eingabefeld in einen Wert vom Typ unsigned long und Speichern, die in _Val ausführen.

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 weitgehend wie das erste, außer dass versucht, ein vollständiges, nicht leeres Gleitkommaeingabefeld übereinstimmt. fac.decimal_point bestimmt die Reihenfolge, die die ganzzahligen Ziffern von den Bruchsziffern trennt. Der entsprechende Scankonvertierungsspezifizierer 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 weitgehend das dritte, dass der entsprechende Scankonvertierungsspezifizierer 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 weitgehend das erste, dass der entsprechende Scankonvertierungsspezifizierer 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 weitgehend wie das erste, außer dass versucht, ein vollständiges, nicht leeres boolesches Eingabefeld übereinstimmt. Wenn erfolgreich es das boolesche Eingabefeld in einen Wert vom Typ bool und Speicher konvertiert, die in _Val ausführen.

Ein Bearbeitungsfeld boolesches nimmt eines von zwei Formulare. Wenn iosbase.flags &ios_base::falseboolalpha ist, ist der gleiche wie ein ganzzahliges Bearbeitungsfeld, außer dass der konvertierte Wert muss entweder 0 (bei false) oder 1 (für true). Andernfalls muss die Sequenz jedes fac übereinstimmen.falsename (bei false) oder fac.truename (bei 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;
}

Ausgabe

.
money_get( ) = -1000.56

Anforderungen

Gebietsschema Header: <>

Namespace: std

Siehe auch

Referenz

num_get-Klasse