money_get::do_get
fonction virtuelle appelée pour extraire une valeur numérique d'une séquence de caractères qui représente une valeur monétaire.
virtual iter_type do_get(
iter_type _First,
iter_type _Last,
bool _Intl,
ios_base& _Iosbase,
ios_base::iostate& _State,
long double& _Val
) const
virtual iter_type do_get(
iter_type _First,
iter_type _Last,
bool _Intl,
ios_base& _Iosbase,
ios_base::iostate& _State,
string_type& _Val
) const
Paramètres
_First
Itérateur d'entrée adressant le début de la séquence à convertir._Last
Itérateur d'entrée adressant la fin de la séquence à convertir._Intl
Valeur booléenne qui indique le type de symbole monétaire attendu dans la séquence : true si international false si national._Iosbase
Un indicateur de format qui, lorsque il est activé, indique que le symbole monétaire est facultatif ; sinon, il est requis._State
Définit les éléments du masque de bits appropriés pour l'état du flux de données selon que les opérations ont réussi ou non._Val
Chaîne stockant la séquence convertie.
Valeur de retour
Un itérateur d'entrée adressant le premier élément au delà du champ d'entrée monétaire.
Notes
La première fonction membre protégée virtuelle tente d'associer des éléments séquentiels commençant au début dans la séquence [_First, _Last) jusqu'à ce qu'elle ait identifié un champ d'entrée complet et non vide. En cas de réussite, il convertit ce champ dans une séquence d'un ou plusieurs chiffres décimaux, éventuellement précédés d'un signe moins (–), pour représenter la quantité et stocke le résultat dans l'objet string_type_Val. Retourne un itérateur indiquant le premier élément au delà du champ d'entrée monétaire. Sinon, la fonction indique une séquence vide dans _Val et définit ios_base::failbit dans _State. Retourne un itérateur indiquant le premier élément au delà de tout préfixe d'un champ d'entrée monétaire valide. Dans l'un et l'autre cas, si la valeur de retour est _Last, la fonction définit ios_base::eofbit dans _State.
La deuxième fonction membre est virtuelle se comporte de la même manière que la première, à la différence qu'en cas de réussite est convertit la séquence éventuellement de signature numérique à une valeur de type long double et stocke cette valeur dans _Val.
Le format d'un champ d'entrée monétaire est déterminé par la facette de paramètres régionaux fac retourné par l'appel effectif use_facet <moneypunct<CharType, intl>>(iosbase.getloc).
Plus précisément :
fac.negative_format détermine l'ordre dans lequel les composants du champ se produisent.
fac.curr_symbol détermine la séquence d'éléments qui constitue un symbole monétaire.
fac.positive_sign détermine la séquence d'éléments qui constitue un signe positif.
fac.negative_sign détermine la séquence d'éléments qui constitue un signe négatif.
fac.grouping détermine comment les données sont regroupées à gauche de toute virgule décimale.
fac.thousands_sep détermine l'élément qui sépare les groupes de chiffres à gauche de toute virgule décimale.
fac.decimal_point détermine l'élément qui sépare les chiffres entiers des chiffres fraction.
fac.frac_digits détermine le nombre de chiffres de fraction importante à droite de toute virgule décimale. En analysant une valeur monétaire avec davantage de chiffres de fraction qui sont requis par frac_digits, do_get arrête d'analyser après avoir utilisé au maximum frac_digits caractères.
Si la chaîne de signe (fac.negative_sign ou fac.positive_sign) a plus d'un élément, seul le premier élément est associé où l'élément égal à money_base::sign apparaît dans le modèle de format (fac.neg_format). Tous les éléments restants sont associés à la fin de le champ d'entrée monétaire. Si ni l'une ni l'autre chaîne n'a de premier élément correspondant à l'élément suivant dans le champ d'entrée monétaire, la chaîne de signe est considérée comme vide et le signe est positif.
If iosbase.flags &showbase est différent de zéro, la chaîne fac.curr_symbol doit être associé où l'élément égal àmoney_base::symbol apparaît dans le modèle de format. Sinon, si money_base::symbol se produit à la fin de le modèle de format, et si aucun élément de la chaîne de signe ne reste à associer, le symbole monétaire n'est pas associé. Sinon, le symbole monétaire est optionnellement associé.
Si les instances de fac.thousands_sep se produisent dans la section de valeur du champ d'entrée monétaire (où l'élément égal à money_base::value apparaît dans le modèle de format), aucune contrainte d'agrégation n'est appliquée. Sinon, toutes les contraintes d'agrégation imposées par fac.regroupement sont appliquées. Notez que la séquence chiffres obtenue représente un entier dont les décimales d'ordre bas fac. frac_digits sont considérées à droite de la virgule décimale.
L'espace blanc arbitraire est associé où l'élément égal à money_base::space apparaît dans le modèle de format, s'il apparaît ailleurs qu'à la fin du modèle de format Sinon, aucun espace interne n'est mis en correspondance. Un élément ch est considéré comme un espace blanc si use_facet <C<CharType> >(iosbase.getloc).est(ctype_base::space, ch) est true.
Exemple
Consultez l'exemple de get, qui appelle do_get.
Configuration requise
En-tête: <paramètres régionaux>
Espace de noms : std