std::num_put::put, std::num_put::do_put
De cppreference.com
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
<metanoindex/>
<tbody> </tbody>| Déclaré dans l'en-tête <locale>
|
||
public: iter_type put( iter_type out, std::ios_base& str, char_type fill, bool v) const; iter_type put( iter_type out, std::ios_base& str, char_type fill, long v) const; iter_type put( iter_type out, std::ios_base& str, char_type fill, long long v) const; iter_type put( iter_type out, std::ios_base& str, char_type fill, unsigned long v) const; iter_type put( iter_type out, std::ios_base& str, char_type fill, unsigned long long v) const; iter_type put( iter_type out, std::ios_base& str, char_type fill, double v) const; iter_type put( iter_type out, std::ios_base& str, char_type fill, long double v) const; iter_type put( iter_type out, std::ios_base& str, char_type fill, const void* v) const; |
(1) | |
protected: iter_type do_put( iter_type out, std::ios_base& str, char_type fill, bool v) const; iter_type do_put( iter_type out, std::ios_base& str, char_type fill, long v) const; iter_type do_put( iter_type out, std::ios_base& str, char_type fill, long long v) const; iter_type do_put( iter_type out, std::ios_base& str, char_type fill, unsigned long) const; iter_type do_put( iter_type out, std::ios_base& str, char_type fill, unsigned long long) const; iter_type do_put( iter_type out, std::ios_base& str, char_type fill, double v) const; iter_type do_put( iter_type out, std::ios_base& str, char_type fill, long double v) const; iter_type do_put( iter_type out, std::ios_base& str, char_type fill, const void* v) const; |
(2) | |
1)
fonction de membre du public, appelle le protégé
do_put virtuelle fonction membre de la classe la plus dérivée .Original:
public member function, calls the protected virtual member function
do_put of the most derived class.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
2)
écrit des caractères à l'
out séquence de sortie qui représente la valeur de v, formaté comme demandé par les codes de formatage str.flags() et les facettes std::numpunct et std::ctype de la locale imprégnée dans le str flux. Cette fonction est appelée par tous les opérateurs format de flux de sortie, tels que std::cout << n; .Original:
writes characters to the output sequence
out which represent the value of v, formatted as requested by the formatting flags str.flags() and the std::numpunct and std::ctype facets of the locale imbued in the stream str. This function is called by all formatted output stream operators, such as std::cout << n;.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Conversion a lieu en quatre étapes
Original:
Conversion occurs in four stages
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Étape 1: spécificateur de conversion de sélection
- I / O indicateurs de format sont obtenus, comme parOriginal:I/O format flags are obtained, as if byThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
fmtflags basefield = (str.flags() & std::ios_base::basefield);fmtflags uppercase = (str.flags() & std::ios_base::uppercase);fmtflags floatfield = (str.flags() & std::ios_base::floatfield);fmtflags showpos = (str.flags() & std::ios_base::showpos);fmtflags showbase = (str.flags() & std::ios_base::showbase);
- Si le type de
vestboolOriginal:If the type ofvisboolThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - * Si
boolalpha == 0, puis convertitvde taperintet effectue de sortie entier .Original:* Ifboolalpha == 0, then convertsvto typeintand performs integer output.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - * Si
boolalpha != 0obtientstd::use_facet<std::numpunct<charT>>(str.getloc()).truename()siv == trueoustd::use_facet<std::numpunct<charT>>(str.getloc()).falsename()siv == false, et émet chaqueccaractère successif de cette chaîne àoutavec*out++ = c. Aucun autre traitement est fait dans ce cas, la fonction retourneout.Original:* Ifboolalpha != 0obtainsstd::use_facet<std::numpunct<charT>>(str.getloc()).truename()ifv == trueorstd::use_facet<std::numpunct<charT>>(str.getloc()).falsename()ifv == false, and outputs each successive charactercof that string tooutwith*out++ = c. No further processing is done in this case, the function returnsout.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Si le type de
vest un type entier, le choix du premier lieu des cinq suivantes est sélectionnée:Original:If the type ofvis an integer type, the the first applicable choice of the following five is selected:The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
- Si
basefield == oct, utilisera spécificateur de conversion%oOriginal:Ifbasefield == oct, will use conversion specifier%oThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Si
basefield == hex && !uppercase, utilisera spécificateur de conversion%xOriginal:Ifbasefield == hex && !uppercase, will use conversion specifier%xThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Si
basefield == hex, utilisera spécificateur de conversion%XOriginal:Ifbasefield == hex, will use conversion specifier%XThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Si le type de
vest signé, va utiliser spécificateur de conversion%dOriginal:If the type ofvis signed, will use conversion specifier%dThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Si le type de
vn'est pas signé, utilisera spécificateur de conversion%uOriginal:If the type ofvis unsigned, will use conversion specifier%uThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
- Pour les types entiers, modificateur de longueur est ajoutée à la spécification de conversion si nécessaire:
lpourlongetunsigned long,llpourlong longetunsigned long long.Original:For integer types, length modifier is added to the conversion specification if necessary:lforlongandunsigned long,llforlong longandunsigned long long.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Si le type de
vest un type à virgule flottante, le choix du premier objet de la cinq suivants est sélectionné:Original:If the type ofvis a floating-point type, the the first applicable choice of the following five is selected:The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
- Si
floatfield == std::ios_base::fixed, utilisera spécificateur de conversion%fOriginal:Iffloatfield == std::ios_base::fixed, will use conversion specifier%fThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Si
floatfield == std::ios_base::scientific && !uppercase, utilisera spécificateur de conversion%eOriginal:Iffloatfield == std::ios_base::scientific && !uppercase, will use conversion specifier%eThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Si
floatfield == std::ios_base::scientific, utilisera spécificateur de conversion%EOriginal:Iffloatfield == std::ios_base::scientific, will use conversion specifier%EThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Si
floatfield == (std::ios_base::fixed | std::ios_base::scientific) && !uppercase, utilisera spécificateur de conversion%a(depuis C++11)Original:Iffloatfield == (std::ios_base::fixed | std::ios_base::scientific) && !uppercase, will use conversion specifier%a(depuis C++11)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Si
floatfield == std::ios_base::fixed | std::ios_base::scientific, utilisera spécificateur de conversion%A(depuis C++11)Original:Iffloatfield == std::ios_base::fixed | std::ios_base::scientific, will use conversion specifier%A(depuis C++11)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Si
!uppercase, utilisera spécificateur de conversion%gOriginal:If!uppercase, will use conversion specifier%gThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - sinon, va utiliser spécificateur de conversion
%GOriginal:otherwise, will use conversion specifier%GThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
- * Si le type de
vestlong double, leLmodificateur de longueur est ajoutée à la spécificateur de conversion .Original:* If the type ofvislong double, the length modifierLis added to the conversion specifier.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - * De plus, si
floatfield != (ios_base::fixed | ios_base::scientific), puis modificateur de précision est ajouté, mis àstr.precision()Original:* Additionally, iffloatfield != (ios_base::fixed | ios_base::scientific), then precision modifier is added, set tostr.precision()The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Pour les types de deux entiers et en virgule flottante, si
showbaseest défini, le#modificateur est ajouté. Sishowposest défini, le+modificateur est ajouté .Original:For both integer and floating-point types, ifshowbaseis set, the modifier#is prepended. Ifshowposis set, the modifier+is prepended.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Si le type de
vestvoid*, utilisera spécificateur de conversion%pOriginal:If the type ofvisvoid*, will use conversion specifier%pThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Une chaîne de caractères étroit est créé comme si par un appel à
std::printf(spec, v)dans la localisation "C", oùspecest le spécificateur de conversion choisi .Original:A narrow character string is created as if by a call tostd::printf(spec, v)in the "C" locale, wherespecis the chosen conversion specifier.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Étape 2: spécifique à la localisation de conversion
- Chaque personnage
cobtenu au stade 1, autre que le'.'point décimal, est converti enCharTen appelantstd::use_facet<std::ctype<CharT>>(str.getloc()).widen(c).Original:Every charactercobtained in Stage 1, other than the decimal point'.', is converted toCharTby callingstd::use_facet<std::ctype<CharT>>(str.getloc()).widen(c).The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Pour les types arithmétiques, le caractère séparateur de milliers, obtenu à partir de
std::use_facet<std::numpunct<CharT>>(str.getloc()).thousands_sep(), est inséré dans la séquence en fonction des règles de regroupement fournies parstd::use_facet<std::numpunct<CharT>>(str.getloc()).grouping()Original:For arithmetic types, the thousands separator character, obtained fromstd::use_facet<std::numpunct<CharT>>(str.getloc()).thousands_sep(), is inserted into the sequence according to the grouping rules provided bystd::use_facet<std::numpunct<CharT>>(str.getloc()).grouping()The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Le séparateur décimal (
'.') sont remplacés parstd::use_facet<std::numpunct<CharT>>(str.getloc()).decimal_point()Original:Decimal point characters ('.') are replaced bystd::use_facet<std::numpunct<CharT>>(str.getloc()).decimal_point()The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Étape 3: rembourrage
- Le drapeau réglage est obtenu comme par
std::fmtflags adjustfield = (flags & (std::ios_base::adjustfield))et examinés pour identifier l'emplacement de rembourrage, comme suitOriginal:The adjustment flag is obtained as if bystd::fmtflags adjustfield = (flags & (std::ios_base::adjustfield))and examined to identify padding location, as followsThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
- Si
adjustfield == std::ios_base::left, va tampon aprèsOriginal:Ifadjustfield == std::ios_base::left, will pad afterThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Si
adjustfield == std::ios_base::right, sera pavé avantOriginal:Ifadjustfield == std::ios_base::right, will pad beforeThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Si
adjustfield == std::ios_base::internalet un caractère de signe se produit dans la représentation, va tampon après le signeOriginal:Ifadjustfield == std::ios_base::internaland a sign character occurs in the representation, will pad after the signThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Si
adjustfield == std::ios_base::internalet la phase 1 a commencé avec la représentation 0x ou 0X, sera pavé après le x ou XOriginal:Ifadjustfield == std::ios_base::internaland Stage 1 representation began with 0x or 0X, will pad after the x or XThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - autrement, sera pavé avantOriginal:otherwise, will pad beforeThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
- Si
str.width()est non nul (std::setw par exemple, vient d'être utilisé) et le numéro de carte après l'étape 2 est inférieure àstr.width(), des copies du caractèrefillsont insérés à la position indiquée par un rembourrage pour amener la longueur de la séquence àstr.width().Original:Ifstr.width()is non-zero (e.g. std::setw was just used) and the number of CharT's after Stage 2 is less thanstr.width(), then copies of thefillcharacter are inserted at the position indicated by padding to bring the length of the sequence tostr.width().The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Etape 4: sortie
Chaque
c caractère successif de la séquence du graphe de la phase 3 est sortie comme par *out++ = c .Original:
Every successive character
c from the sequence of CharT's from Stage 3 is output as if by *out++ = c.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Paramètres
| out | - | itérateur pointant sur le premier caractère d'être écrasés
Original: iterator pointing to the first character to be overwritten The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
| str | - | diffuser de récupérer les informations de mise en forme à partir
Original: stream to retrieve the formatting information from The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
| fill | - | caractère de remplissage utilisé lorsque les résultats doit être complétée à la largeur du champ
Original: padding character used when the results needs to be padded to the field width The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
| v | - | Valeur à convertir en chaîne et de sortie
Original: value to convert to string and output The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Retourne la valeur
out
Notes
Le zéro initial généré par la spécification de conversion
#o (résultant de la combinaison de std::showbase et std::oct par exemple) n'est pas compté comme un caractère de remplissage .Original:
The leading zero generated by the conversion specification
#o (resulting from the combination of std::showbase and std::oct for example) is not counted as a padding character.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Exemple
Émettre un numéro à l'aide locale mondial
Original:
Output a number using global locale
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
#include <iostream>
#include <locale>
int main()
{
auto &facet = std::use_facet<std::num_put<char>>(std::locale());
facet.put(std::cout, std::cout, '0', 2.71);
std::cout << '\n';
}Résultat :
2,71Voir aussi
inserts en forme des données Original: inserts formatted data The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (fonction membre publique de std::basic_ostream)
| |