Partager via


money_put, classe

Le modèle de classe décrit un objet qui peut servir de facette de paramètres régionaux pour contrôler les conversions de valeurs monétaires en séquences de type CharType.

Syntaxe

template <class CharType,
    class OutputIterator = ostreambuf_iterator<CharType>>
class money_put : public locale::facet;

Paramètres

CharType
Type utilisé dans un programme pour encoder des caractères dans des paramètres régionaux spécifiques.

OutputIterator
Type d'itérateur dans lequel les fonctions put monétaires enregistrent leur sortie.

Notes

Comme avec n'importe quelle facette de paramètres régionaux, l'ID d'objet statique possède une valeur stockée initiale de zéro. La première tentative d’accès à sa valeur stockée entraîne le stockage d’une valeur positive unique dans id.

Constructeurs

Constructeur Description
money_put Constructeur des objets de type money_put.

Typedefs

Nom de type Description
char_type Type utilisé pour décrire un caractère utilisé par des paramètres régionaux.
iter_type Type qui décrit un itérateur de sortie.
string_type Type qui décrit une chaîne contenant des caractères de type CharType.

Fonctions Membre

Fonction membre Description
do_put Fonction virtuelle appelée pour convertir un nombre ou une chaîne en une séquence de caractères représentant une valeur monétaire.
put Convertit un nombre ou une chaîne en une séquence de caractères représentant une valeur monétaire.

Spécifications

Header :<locale>

Espace de noms : std

money_put ::char_type

Type utilisé pour décrire un caractère utilisé par des paramètres régionaux.

typedef CharType char_type;

Notes

Le type est un synonyme du paramètre de modèle CharType.

money_put ::d o_put

Fonction virtuelle appelée pour convertir un nombre ou une chaîne en une séquence de caractères représentant une valeur monétaire.

virtual iter_type do_put(
    iter_type next,
    bool _Intl,
    ios_base& _Iosbase,
    CharType _Fill,
    const string_type& val) const;

virtual iter_type do_put(
    iter_type next,
    bool _Intl,
    ios_base& _Iosbase,
    CharType _Fill,
    long double val) const;

Paramètres

suivant
Itérateur qui traite le premier élément de la chaîne insérée.

_Intl
Valeur booléenne indiquant le type de symbole monétaire attendu dans la séquence : true si international, false s’il est intérieur.

_Iosbase
Indicateur de format qui, quand il est défini, indique que le symbole monétaire est facultatif. Dans le cas contraire, il est obligatoire.

_Remplir
Caractère utilisé pour l’espacement.

val
Objet de chaîne à convertir.

Valeur de retour

Itérateur de sortie qui traite la position située juste au-delà du dernier élément produit.

Notes

La première fonction membre protégée virtuelle génère des éléments séquentiels commençant à côté pour produire un champ de sortie monétaire à partir du val d’objet string_type. La séquence contrôlée par val doit commencer par un ou plusieurs chiffres décimaux, éventuellement précédés d’un signe moins (-), qui représente la quantité. La fonction retourne un itérateur désignant le premier élément au-delà du champ de sortie monétaire généré.

La deuxième fonction membre protégée virtuelle se comporte de la même façon que la première, sauf qu’elle convertit effectivement val en une séquence de chiffres décimaux, éventuellement précédée d’un signe moins, puis convertit cette séquence comme ci-dessus.

Le format d’un champ de sortie monétaire est déterminé par la facette locale retournée par l’appel (effectif) use_facet<moneypunct<CharType, intl>>( iosbase). getloc).

Plus précisément :

  • fac. pos_format détermine l’ordre dans lequel les composants du champ sont générés pour une valeur non négative.

  • fac. neg_format détermine l’ordre dans lequel les composants du champ sont générés pour une valeur négative.

  • fac. curr_symbol détermine la séquence d’éléments à générer pour un symbole monétaire.

  • fac. positive_sign détermine la séquence d’éléments à générer pour un signe positif.

  • fac. negative_sign détermine la séquence d’éléments à générer pour un signe négatif.

  • fac. grouping détermine comment les chiffres sont regroupés à gauche de la virgule décimale.

  • fac. thousands_sep détermine l’élément qui sépare les groupes de chiffres à gauche de la virgule décimale.

  • fac. decimal_point détermine l’élément qui sépare les chiffres entiers des chiffres de fraction.

  • fac. frac_digits détermine le nombre de chiffres de fraction significatifs à droite de la virgule décimale.

Si la chaîne de signe (fac. negative_sign ou fac. positive_sign) a plusieurs éléments, seul le premier élément est généré où l’élément est égal à money_base ::sign apparaît dans le modèle de format (fac. neg_format ou fac). pos_format Les éléments restants sont générés à la fin du champ de sortie monétaire.

Si iosbase. flags &showbase est différent de zéro, la fac de chaîne. curr_symbol est générée là où l’élément égal à money_base::symbol apparaît dans le modèle de format. Sinon, aucun symbole monétaire n’est généré.

Si aucune contrainte de regroupement n’est imposée par fac. grouping (son premier élément a la valeur CHAR_MAX), aucune instance de fac. thousands_sep n’est générée dans la partie valeur du champ de sortie monétaire (où l’élément égal à money_base::value apparaît dans le modèle de format). If fac. frac_digits a la valeur zéro, aucune instance de fac. decimal_point n’est générée après les chiffres décimaux. Dans le cas contraire, le champ de sortie monétaire résultant place les chiffres décimaux fac. frac_digits de poids faible à droite de la virgule décimale.

Le remplissage se produit comme pour n’importe quel champ de sortie numérique, sauf que si iosbase. indicateurs & iosbase. internal est différent de zéro, tout remplissage interne est généré là où l’élément égal à money_base::space apparaît dans le modèle de format, s’il apparaît. Sinon, le remplissage interne se produit avant la séquence générée. Le caractère de remplissage est fill.

La fonction appelle iosbase. width(0) pour réinitialiser la largeur du champ à la valeur zéro.

Exemple

Consultez l’exemple relatif à put, où la fonction membre virtuelle est appelée par put.

money_put ::iter_type

Type qui décrit un itérateur de sortie.

typedef OutputIterator iter_type;

Notes

Le type est un synonyme du paramètre de modèle OutputIterator.

money_put ::money_put

Constructeur des objets de type money_put.

explicit money_put(size_t _Refs = 0);

Paramètres

_Refs
Valeur entière qui sert à spécifier le type de gestion de la mémoire pour l’objet.

Notes

Les valeurs possibles pour le paramètre _Refs et leur signification sont les suivantes :

  • 0 : la durée de vie de l’objet est gérée par les paramètres régionaux qui le contiennent.

  • 1 : la durée de vie de l’objet doit être gérée manuellement.

  • > 1 : ces valeurs ne sont pas définies.

Aucun exemple direct n’est possible, car le destructeur est protégé.

Le constructeur initialise son objet de base avec locale::facet( _Refs).

money_put ::p ut

Convertit un nombre ou une chaîne en une séquence de caractères représentant une valeur monétaire.

iter_type put(
    iter_type next,
    bool _Intl,
    ios_base& _Iosbase,
    CharType _Fill,
    const string_type& val) const;

iter_type put(
    iter_type next,
    bool _Intl,
    ios_base& _Iosbase,
    CharType _Fill,
    long double val) const;

Paramètres

suivant
Itérateur qui traite le premier élément de la chaîne insérée.

_Intl
Valeur booléenne indiquant le type de symbole monétaire attendu dans la séquence : true si international, false s’il est intérieur.

_Iosbase
Indicateur de format qui, quand il est défini, indique que le symbole monétaire est facultatif. Dans le cas contraire, il est obligatoire.

_Remplir
Caractère utilisé pour l’espacement.

val
Objet de chaîne à convertir.

Valeur de retour

Itérateur de sortie qui traite la position située juste au-delà du dernier élément produit.

Notes

Les deux fonctions membres retournent do_put( next, _Intl, _Iosbase, _Fill, val).

Exemple

// money_put_put.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>

int main()
{
    std::locale loc( "german_germany" );
    std::basic_stringstream<char> psz;

    psz.imbue(loc);
    psz.flags(psz.flags() | std::ios_base::showbase); // force the printing of the currency symbol
    std::use_facet<std::money_put<char> >(loc).put(std::basic_ostream<char>::_Iter(psz.rdbuf()), true, psz, ' ', 100012);
    if (psz.fail())
        std::cout << "money_put() FAILED" << std::endl;
    else
        std::cout << "money_put() = \"" << psz.rdbuf()->str() << "\"" << std::endl;
}
money_put() = "EUR1.000,12"

money_put ::string_type

Type qui décrit une chaîne contenant des caractères de type CharType.

typedef basic_string<CharType, Traits, Allocator> string_type;

Notes

Le type décrit une spécialisation du modèle de classe basic_string dont les objets peuvent stocker des séquences d’éléments à partir de la séquence source.

Voir aussi

<locale>
facet, classe
Sécurité des threads dans la bibliothèque C++ Standard