num_put::do_put
Une fonction virtuelle qui est appelée pour convertir un nombre dans une séquence de CharTypes qui représente le nombre mis en forme pour les paramètres régionaux donnés.
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
bool _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
long _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
unsigned long _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
double _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
long double _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
const void * _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
const long long _Val
) const; virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
const unsigned long long _Val
) const;
Paramètres
_Next
Un itérateur adressage le premier élément dans la chaîne insérée._Iosbase
A spécifié le flux de données qui contient des paramètres régionaux à la facette de numpunct utilisée pour ponctuer la sortie et les indicateurs pour mettre en forme la sortie._Fill
Caractère utilisé pour espacer._Val
Le nombre ou le type boolean qui sera sortie.
Valeur de retour
Un itérateur de sortie les adresses que la position une au delà de le dernier élément est produite.
Notes
La première fonction membre est virtuelle génère des éléments séquentiels commençant à _Next à produire un champ de sortie entier de la valeur d'_Val. La fonction retourne un itérateur qui indique l'emplacement suivant pour insérer un élément au delà de le champ de sortie entier généré.
Le champ de sortie de type entier est généré par les mêmes règles que celles utilisées par les fonctionnalités d'impression pour générer un jeu d'éléments de char dans un fichier. Chaque un élément de type char est utilisé pour mapper à un élément équivalent du type CharType à un seul mappage un-à-un. Où une fonction d'impression est un champ avec ou des espaces ou le chiffre 0, toutefois, do_put utilise à la place fill. La spécification de conversion équivalente d'impression est déterminé comme suit :
Si iosbase. == &ios_base::oct.d'indicateursios_base::basefield, la spécification de conversion est lo.
Si == &ios_base::hexd'iosbase.flagsios_base::basefield, la spécification de conversion est lx.
Sinon, la spécification de conversion est ld.
Si iosbase.largeur est différente de zéro, une largeur du champ de cette valeur est ajouté. La fonction appelle ensuite iosbase.width(0) pour transmettre la largeur du champ à zéro.
Le remplissage est généré uniquement si le nombre minimal d'éléments N spécifier le champ de sortie est inférieure à iosbase.largeur. Un tel remplissage consiste en une séquence de N – copie de width de fill. L'exécution se produit comme suit :
Si iosbase. == &ios_base::gauchedeflagsios_base::adjustfield, l'indicateur – est ajouté. (Alimentation se produit après le texte généré.)
Si == &ios_base::interned'iosbase.flagsios_base::adjustfield, l'indicateur 0 est ajouté. (Pour un champ de sortie numérique, effectuer se produit lorsque le pavé de fonctionnalités d'impression à 0.)
Sinon, aucun indicateur supplémentaire n'est ajoutée. (Alimentation se produit avant que la séquence générée.)
Enfin :
Si iosbase.flags &ios_base::showpos est différente de zéro, l'indicateur + est ajouté à la spécification de conversion.
Si iosbase.flags & ios_base::showbase est différente de zéro, l'indicateur # est ajouté à la spécification de conversion.
Le format d'un champ de sortie de type entier est également déterminé par facette de paramètres régionaux fac retourné par l'appel use_facet <numpunct<Elem>(iosbase.getloc). Plus précisément :
fac.regroupement détermine comment les données sont regroupées à gauche de toute virgule décimale
fac.thousands_sep détermine la séquence qui sépare les groupes de chiffres à gauche de toute virgule décimale
Si aucune contrainte de regroupement n'est imposée par fac.regroupement (premier élément a la valeur CHAR_MAX), puis les instances de fac.thousands_sep dans le domaine de sortie. Sinon, les séparateurs sont insérés après la conversion d'impression est accordée.
La deuxième fonction membre est virtuelle :
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, unsigned long _Val) const;
se comporte de la même manière que la première, sauf qu'il remplace une spécification de conversion de ld par lu.
La troisième fonction membre est virtuelle :
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, double _Val) const;
se comporte de la même manière que la première, sauf qu'il produit un champ de sortie à virgule flottante à la valeur de val.fac.decimal_point détermine la séquence qui sépare les données entiers de chiffres de fraction. La spécification de conversion équivalente d'impression est déterminé comme suit :
Si iosbase. == &ios_base::définitdeflagsios_base::floatfield, la spécification de conversion est lf.
Si iosbase. == &ios_base::scientifiquedeflagsios_base::floatfield, la spécification de conversion est le. Si iosbase.flags &ios_base::majuscules est différente de zéro, e est remplacé par E.
Sinon, la spécification de conversion est lg. Si iosbase.flags &ios_base::uppercase est différente de zéro, g est remplacé par G.
Si iosbase.flags &ios_base::fixed est différent de zéro ou si iosbase.précision est supérieur à zéro, une précision à la valeur iosbase.precision est ajouté à la spécification de conversion. Tout remplissage se comporte de la même manière que pour un champ de sortie entier. Le caractère de remplissage est fill. Enfin :
Si iosbase.flags &ios_base::showpos est différente de zéro, l'indicateur + est ajouté à la spécification de conversion.
Si iosbase.flags &ios_base::showpoint est différente de zéro, l'indicateur # est ajouté à la spécification de conversion.
La quatrième fonction membre est virtuelle :
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, long double _Val) const;
se comporte de la même la troisième, mais le qualificateur l dans la spécification de conversion est remplacé par L.
La cinquième fonction membre est virtuelle :
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, const void *_Val) const;
se comporte de la même la première, sauf si la spécification de conversion est p**,** et n'importe quel identificateur nécessaire pour spécifier le remplissage.
La sixième fonction membre est virtuelle :
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, bool _Val) const;
se comporte de la même manière que la première, sauf qu'il génère un champ de sortie booléen d'_Val.
Un champ de sortie booléen prend l'une des deux formes suivantes. Si iosbase.flags &ios_base::boolalpha est false, retourne do_put(_Next, _Iosbase, _Fill, (long)_Val) d'une fonction membre, qui produit généralement une séquence générée de 0 (pour false) ou 1 (pour true). Sinon, la séquence générées est l'un des fac.falsename) (pour false), ou fac.truename (pour true).
Le septième fonction membre est virtuelle :
virtual iter_type do_put(iter_type next, ios_base& iosbase,
Elem fill, long long val) const;
se comporte de la même manière que la première, sauf qu'il remplace une spécification de conversion de ld par lld.
La huitième fonction membre est virtuelle :
virtual iter_type do_put(iter_type next, ios_base& iosbase,
Elem fill, unsigned long long val) const;
se comporte de la même manière que la première, sauf qu'il remplace une spécification de conversion d'ld par llu.
Exemple
Consultez l'exemple de mettez, qui appelle do_put.
Configuration requise
**En-tête :**paramètres régionaux <de >
Espace de noms : std