num_put, classe
Modèle de classe qui décrit un objet qui peut servir de facette de paramètres régionaux pour contrôler les conversions de valeurs numériques en séquences de type CharType
.
Syntaxe
template <class CharType,
class OutputIterator = ostreambuf_iterator<CharType>>
class num_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 numériques Put écrivent 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 |
---|---|
num_put | Constructeur des objets de type num_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. |
Fonctions Membre
Fonction membre | Description |
---|---|
do_put | Fonction virtuelle qui est appelée pour convertir un nombre en une séquence de CharType qui représente le nombre au format de paramètres régionaux donnés. |
put | Convertit un nombre en une séquence de CharType qui représente le nombre au format de paramètres régionaux donnés. |
Spécifications
Header :<locale>
Espace de noms : std
num_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
.
num_put ::d o_put
Fonction virtuelle qui est appelée pour convertir un nombre en une séquence de CharType
qui représente le nombre au format de 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
suivant
Itérateur qui traite le premier élément de la chaîne insérée.
_Iosbase
Spécifie le flux qui contient des paramètres régionaux avec la facette numpunct utilisée pour les signes de ponctuation de la sortie et des indicateurs pour la mise en forme de la sortie.
_Remplir
Caractère utilisé pour l’espacement.
val
Nombre ou type booléen à envoyer en sortie.
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 entier à partir de la valeur de val. La fonction retourne un itérateur désignant l’emplacement suivant où insérer un élément au-delà du champ de sortie d’entier généré.
Le champ de sortie d’entier est généré par les mêmes règles que celles utilisées par les fonctions d’impression pour la génération d’une série d’éléments char
dans un fichier. Chaque élément char de ce type est supposé mapper à un élément de type CharType
équivalent par un mappage simple et un-à-un. Lorsqu’une fonction d’impression padse un champ avec des espaces ou le chiffre 0, cependant, do_put
utilise fill
à la place . La spécification de conversion d’impression équivalente est déterminée comme suit :
Si iosbase. indicateurs &
ios_base::
==ios_base::basefield
oct, la spécification de conversion est .lo
Si iosbase.flags &ios_base ::basefield
ios_base::
== hex, la spécification de conversion est .lx
Autrement, la spécification de conversion est
ld
.
Si iosbase. width est différent de zéro, une largeur de champ de cette valeur est ajoutée. La fonction appelle ensuite iosbase. width(0) pour réinitialiser la largeur du champ à la valeur zéro.
Le remplissage se produit uniquement si le nombre minimal d’éléments N exigé pour spécifier le champ de sortie est inférieur à iosbase. width. Ce remplissage se compose d’une séquence de copies de largeur N - de remplissage. Le remplissage se produit ensuite comme suit :
Si iosbase. indicateurs &
ios_base::
==ios_base::adjustfield
à gauche, l’indicateur - est prédéfini. (Le remplissage se produit après le texte généré.)Si iosbase.flags &ios_base ::adjustfield
ios_base::
== interne, l’indicateur 0 est précédé. (Pour un champ de sortie numérique, le remplissage se produit là où les fonctions d’impression remplissent avec 0.)Autrement, aucun indicateur supplémentaire n’est ajouté. (Le remplissage se produit avant la séquence générée.)
Pour finir :
Si iosbase. flags &
ios_base::
showpos est différent de zéro, l’indicateur + est ajouté à la spécification de conversion.Si iosbase. flags & ios_base ::showbase est différent de zéro, l’indicateur # est précédé de la spécification de conversion.
Le format d’un champ de sortie entier est déterminé par la facette locale retournée par l’appel use_facet<numpunct<Elem>( iosbase). getloc). Plus précisément :
fac. grouping détermine comment les chiffres sont regroupés à gauche de la virgule décimale.
fac. thousands_sep détermine la séquence qui sépare les groupes de chiffres à gauche de la virgule décimale.
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 le champ de sortie. Autrement, les séparateurs sont insérés après que la conversion d’impression a eu lieu.
La deuxième fonction membre protégée virtuelle :
virtual iter_type do_put(iter_type next,
ios_base& _Iosbase,
CharType _Fill,
unsigned long val) const;
Se comporte comme la première, sauf qu’elle remplace une spécification de conversion de ld
par lu
.
La troisième fonction membre protégée virtuelle :
virtual iter_type do_put(iter_type next,
ios_base& _Iosbase,
CharType _Fill,
double val) const;
Se comporte comme la première, sauf qu’elle génère un champ de sortie à virgule flottante à partir de la valeur de val. fac. decimal_point détermine la séquence qui sépare les chiffres entiers des chiffres de fraction. La spécification de conversion d’impression équivalente est déterminée comme suit :
Si iosbase. indicateurs &
ios_base::
==ios_base::floatfield
fixes, la spécification de conversion est .lf
Si iosbase. indicateurs &ios_base ::floatfield
ios_base::
== scientifique, la spécification de conversion est .le
Si iosbase. flags &ios_base::
majuscules est différent de zéro,e
est remplacé parE
.Autrement, la spécification de conversion est lg. Si iosbase. flags & ios_base ::uppercase is nonzero,
g
is remplace parG
.
Si iosbase. flags & ios_base ::fixed est différent de zéro ou si iosbase. precision est supérieure à zéro, une précision avec la valeur iosbase. precision est ajoutée à la spécification de conversion. Tout remplissage se comporte comme pour un champ de sortie d’entier. Le caractère de remplissage est fill. Pour finir :
Si iosbase. flags &
ios_base::
showpos est différent de zéro, l’indicateur + est ajouté à la spécification de conversion.Si iosbase. flags &
ios_base::
showpoint est différent de zéro, l’indicateur # est ajouté à la spécification de conversion.
La quatrième fonction membre protégée virtuelle :
virtual iter_type do_put(iter_type next,
ios_base& _Iosbase,
CharType _Fill,
long double val) const;
se comporte le même que le troisième, sauf que le qualificateur l
dans la spécification de conversion est remplacé par L
.
La cinquième fonction membre protégée virtuelle :
virtual iter_type do_put(iter_type next,
ios_base& _Iosbase,
CharType _Fill,
const void* val) const;
Se comporte comme la première, sauf que la spécification de conversion est p
, plus tout qualificateur nécessaire pour spécifier le remplissage.
La sixième fonction membre protégée virtuelle :
virtual iter_type do_put(iter_type next,
ios_base& _Iosbase,
CharType _Fill,
bool val) const;
se comporte de la même façon que le premier, sauf qu’il génère un champ de sortie booléen à partir de val.
Un champ de sortie booléen peut avoir deux formes. Si iosbase.flags & ios_base::
boolalpha est false
, la fonction membre retourne do_put(_Next, _Iosbase, _Fill, (long)val)
, 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ée est soit fac.falsename (pour false
) ou fac.truename (pour true
).
La septième fonction membre protégée virtuelle :
virtual iter_type do_put(iter_type next,
ios_base& iosbase,
Elem fill,
long long val) const;
Se comporte comme la première, sauf qu’elle remplace une spécification de conversion de ld
par lld
.
La huitième fonction membre protégée virtuelle :
virtual iter_type do_put(iter_type next,
ios_base& iosbase,
Elem fill,
unsigned long long val) const;
Se comporte comme la première, sauf qu’elle remplace une spécification de conversion de ld
par llu
.
Exemple
Consultez l’exemple relatif à put, qui appelle do_put
.
num_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.
num_put ::num_put
Constructeur des objets de type num_put
.
explicit num_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).
num_put ::p ut
Convertit un nombre en séquence de CharType
s qui représente le nombre mis en forme pour un paramètre régional donné.
iter_type put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
bool val) const;
iter_type put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
long val) const;
iter_type put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
unsigned long val) const;
iter_type put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
Long long val) const;
iter_type put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
Unsigned long long val) const;
iter_type put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
double val) const;
iter_type put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
long double val) const;
iter_type put(
iter_type dest,
ios_base& _Iosbase,
_Elem _Fill,
const void* val) const;
Paramètres
dest
Itérateur qui traite le premier élément de la chaîne insérée.
_Iosbase
Spécifie le flux qui contient des paramètres régionaux avec la facette numpunct utilisée pour les signes de ponctuation de la sortie et des indicateurs pour la mise en forme de la sortie.
_Remplir
Caractère utilisé pour l’espacement.
val
Nombre ou type booléen à envoyer en sortie.
Valeur de retour
Itérateur de sortie qui traite la position située juste au-delà du dernier élément produit.
Notes
Toutes les fonctions membres retournent do_put( next
, _Iosbase
, _Fill
, val
).
Exemple
// num_put_put.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
using namespace std;
int main( )
{
locale loc( "german_germany" );
basic_stringstream<char> psz2;
ios_base::iostate st = 0;
long double fVal;
cout << "The thousands separator is: "
<< use_facet < numpunct <char> >(loc).thousands_sep( )
<< endl;
psz2.imbue( loc );
use_facet < num_put < char > >
( loc ).put(basic_ostream<char>::_Iter(psz2.rdbuf( ) ),
psz2, ' ', fVal=1000.67);
if ( st & ios_base::failbit )
cout << "num_put( ) FAILED" << endl;
else
cout << "num_put( ) = " << psz2.rdbuf( )->str( ) << endl;
}
The thousands separator is: .
num_put( ) = 1.000,67
Voir aussi
<locale>
facet, classe
Sécurité des threads dans la bibliothèque C++ Standard