Partager via


num_get::get

Récupère un numérique ou une valeur booléenne d'une séquence de caractères.

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;

Paramètres

  • _First
    Le début de la plage de caractères duquel lire le nombre.

  • _Last
    La fin de la plage de caractères duquel lire le nombre.

  • _Iosbase
    ios_base dont les balises sont utilisées par la conversion.

  • _State
    Le rapport auquel le failbit (voir l' ios_base::iostate) est ajouté en cas de échec.

  • _Val
    Valeur qui a été lue.

Valeur de retour

L'itérateur après que la valeur a été lue.

Notes

Toutes les fonctions membres do_getde retour (_First, _Last, _Iosbase, _State, _Val).

Les premiers tests protégés virtuels de fonction membre pour faire correspondre les éléments séquentiels démarrage d'abord dans la séquence [_First, _Last) jusqu'à ce qu'elle soit identifié un champ d'entrée entière complet et non vide.Si réussie, elle convertit ce champ à sa valeur équivalente comme type long et stocke le résultat dans _Val.Elle retourne un itérateur qui indique le premier élément au delà de le champ d'entrée numérique.Sinon, la fonction ne stocke aucun effet dans _Val et définit ios_base::failbit dans le _State.Elle retourne un itérateur qui indique le premier élément au delà de n'importe quel préfixe d'un champ d'entrée entière valide.Dans les deux cas, si la valeur de retour égale last, la fonction définit ios_base::eofbit dans _State.

Le champ d'entrée entière est converti par les mêmes règles utilisées par les fonctions d'analyse pour la mise en correspondance et convertir une série d'éléments d' char d'un fichier.Chacun de ces éléments d' char est supposé pour mapper à un élément équivalent de type CharType par un simple, mappage univoque.La spécification de conversion équivalente d'analyse est déterminée comme suit :

  • Si iosbase.balises et == ios_base::Octd' ios_base::basefield , la spécification de conversion est lo.

  • Si iosbase.flags et == ios_base::hexad' ios_base::basefield , la spécification de conversion est lx.

  • Si iosbase.flags et == 0 d' ios_base::basefield , la spécification de conversion est li.

  • Sinon, la spécification de conversion est ld.

Le format d'un champ d'entrée entière est plus de déterminé par facette de paramètres régionauxfac retourné par l'appel use_facet <numpunct<Elem> (iosbase.getloc).Plus précisément :

  • fac.regroupement détermine comment les chiffres sont regroupés à gauche d'une virgule décimale.

  • fac.thousands_sep détermine la séquence qui sépare les groupes de chiffres à gauche d'une virgule décimale.

Si aucune instances de fac.thousands_sep se produisent dans le champ d'entrée numérique, aucune agrégation que la contrainte est appliquée.Sinon, toutes les contraintes d'agrégation possèdent imposé par fac.grouping est imposé les délimiteurs et sont supprimés avant que la conversion d'analyse se produit.

La deuxième fonction membre virtuelle protégée :

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

se comporte de la même manière que le premier, mais il remplace une spécification de conversion de ld par lu.En cas de réussite, il convertit le champ d'entrée numérique à une valeur de type unsigned long et stocke cette valeur dans _Val.

La troisième fonction membre virtuelle protégée :

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

se comporte de la même manière que le premier, mais il tente de correspondre un champ d'entrée à virgule flottante complet et non vide.fac.decimal_point détermine la séquence qui sépare les chiffres entiers des chiffres de fraction.Le spécificateur équivalent de conversion d'analyse est lf.

La quatrième fonction membre virtuelle protégée :

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

se comporte la même chose le tiers, mais que le spécificateur équivalent de conversion d'analyse est LF.

La cinquième fonction membre virtuelle protégée :

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

se comporte la même chose le premier, mais que le spécificateur équivalent de conversion d'analyse est P.

La sixième fonction membre virtuelle protégée :

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

se comporte de la même manière que le premier, mais il tente de correspondre un champ d'entrée booléen complet et non vide.En cas de réussite il convertit le champ d'entrée booléen à une valeur de type bool et stocke cette valeur dans _Val.

Un champ d'entrée booléen prend une des deux formes.Si iosbase.flags et ios_base::boolalpha est false, c'est ce que champ d'entrée entière, sauf que la valeur convertie doit avoir la valeur 0 (pour false) ou 1 (pour true).Sinon, la séquence doit correspondre à l'un ou l'autre de fac.falsename (pour false), ou fac.truename (pour true).

Exemple

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

Sortie

.
money_get( ) = -1000.56

Configuration requise

en-tête : <locale>

l'espace de noms : DST

Voir aussi

Référence

num_get Class