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
<paramètres régionaux>
facet, classe
Sécurité des threads dans la bibliothèque C++ Standard