std::num_put::put, std::num_put::do_put
Aus 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>| definiert in Header <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)
öffentliche Member-Funktion ruft die geschützte virtuelle Member-Funktion
do_put der am meisten abgeleiteten Klasse .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)
schreibt Zeichen der Ausgangssequenz
out die den Wert der v darstellen, formatiert wie von den Formatierungen flags str.flags() und die std::numpunct und std::ctype Facetten der locale im Strom str durchdrungen. Diese Funktion wird von allen formatierten Ausgabedatenstrom Operatoren wie std::cout << n; genannt .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.
Umsetzung erfolgt in vier Stufen
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.
Stufe 1: Konvertierungsspezifizierer Auswahl
- I / O-Format Flags erhalten werden, wie durchOriginal: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);
- Wenn der Typ der
vistboolOriginal: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. - * Wenn
boolalpha == 0, dann wandeltvumintgeben und führt ganzzahlige Ausgabe .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. - * Wenn
boolalpha != 0erhältstd::use_facet<std::numpunct<charT>>(str.getloc()).truename()wennv == trueoderstd::use_facet<std::numpunct<charT>>(str.getloc()).falsename()wennv == falseund gibt Zeichen für Zeichencdieser Zeichenfolgeoutmit*out++ = c. Keine weitere Verarbeitung in diesem Fall erfolgt ist, gibt die Funktionout.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. - Wenn die Art der
vist ein Integer-Typ, wird die die erste anwendbare Wahl der folgenden fünf ausgewähltOriginal: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.
- Wenn
basefield == oct, verwenden Konvertierungsspezifizierer%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. - Wenn
basefield == hex && !uppercase, verwenden Konvertierungsspezifizierer%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. - Wenn
basefield == hex, verwenden Konvertierungsspezifizierer%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. - Wenn die Art der
vunterzeichnet wird, verwenden Konvertierungsspezifizierer%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. - Wenn die Art der
vunsigned ist, wird verwendet Konvertierungsspezifizierer%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.
- Für Integer-Typen wird die Länge Modifier für die Umwandlung Spezifikation, falls erforderlich:
lfürlongundunsigned long,llfürlong longundunsigned 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. - Wenn die Art der
vist ein Floating-Point-Typ wird das die erste anwendbare Wahl der folgenden fünf ausgewähltOriginal: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.
- Wenn
floatfield == std::ios_base::fixed, verwenden Konvertierungsspezifizierer%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. - Wenn
floatfield == std::ios_base::scientific && !uppercase, verwenden Konvertierungsspezifizierer%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. - Wenn
floatfield == std::ios_base::scientific, verwenden Konvertierungsspezifizierer%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. - Wenn
floatfield == (std::ios_base::fixed | std::ios_base::scientific) && !uppercase, verwenden Konvertierungsspezifizierer%a(seit C++11)Original:Iffloatfield == (std::ios_base::fixed | std::ios_base::scientific) && !uppercase, will use conversion specifier%a(seit C++11)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Wenn
floatfield == std::ios_base::fixed | std::ios_base::scientific, verwenden Konvertierungsspezifizierer%A(seit C++11)Original:Iffloatfield == std::ios_base::fixed | std::ios_base::scientific, will use conversion specifier%A(seit C++11)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - Wenn
!uppercase, verwenden Konvertierungsspezifizierer%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. - Andernfalls verwenden Konvertierungsspezifizierer
%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.
- * Wenn die Art der
vistlong doubledie Länge ModifiziererLwird dem Konvertierungsspezifizierer hinzugefügt .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. - * Außerdem, wenn
floatfield != (ios_base::fixed | ios_base::scientific), dann Präzision Modifikator hinzugefügt, umstr.precision()gesetztOriginal:* 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. - Für beide Integer-und Floating-Point-Typen, wenn
showbasegesetzt ist, wird der Modifikator#vorangestellt. Wennshowposgesetzt ist, wird der Modifikator+vorangestellt .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. - Wenn die Art der
vistvoid*, verwenden Konvertierungsspezifizierer%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. - Ein schmaler Zeichenkette wird, als ob durch einen Aufruf
std::printf(spec, v)in der "C"-Locale, wospecist die gewählte Konvertierungsspezifizierer erstellt .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.
Stage 2: locale-spezifischen Umwandlung
- Jeder Charakter
cin Stufe 1, außer dem Komma'.'erhalten wird, wirdCharTindemstd::use_facet<std::ctype<CharT>>(str.getloc()).widen(c)umgewandelt .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. - Für arithmetische Typen wird das Tausendertrennzeichen aus
std::use_facet<std::numpunct<CharT>>(str.getloc()).thousands_sep()erhalten werden, in der Reihenfolge nach den Gruppierung Regelnstd::use_facet<std::numpunct<CharT>>(str.getloc()).grouping()vorgesehen ist, eingeführtOriginal: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. - Dezimalpunkt Zeichen (
'.') werden durchstd::use_facet<std::numpunct<CharT>>(str.getloc()).decimal_point()ersetztOriginal: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.
Stufe 3: Polsterung
- Die Anpassung Flag wird wie von
std::fmtflags adjustfield = (flags & (std::ios_base::adjustfield))erhalten und untersucht, um Polsterung Standort identifiziert, wie folgtOriginal: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.
- Wenn
adjustfield == std::ios_base::left, wird Pad nachOriginal: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. - Wenn
adjustfield == std::ios_base::right, wird Pad vorOriginal: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. - Wenn
adjustfield == std::ios_base::internalund ein Vorzeichen tritt in der Darstellung, wird Pad nach dem SchildOriginal: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. - Wenn
adjustfield == std::ios_base::internalund Stage 1 Darstellung begann mit 0x oder 0X, wird Pad nach dem x oder 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. - ansonsten wird Pad vorOriginal: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.
- Wenn
str.width()nicht Null ist (zB std::setw nur verwendet wurde) und die Anzahl der Chart nach Stufe 2 ist kleiner alsstr.width(), dann Kopien derfillZeichen werden an der Position, die durch padding, um die Länge der Sequenzstr.width()bringen eingefügt.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.
Stage 4: output
Jedes Zeichen für Zeichen
c aus der Sequenz des Diagramms aus Stufe 3 wird als wenn sie von *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.
Parameter
| out | - | Iterator zeigt auf das erste Zeichen überschrieben werden
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 | - | streamen, um die Formatierung der Informationen aus abzurufen
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 | - | Füllzeichen verwendet werden, wenn die Ergebnisse muss auf die Feldbreite aufgefüllt werden
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 | - | Wert auf einen String und Ausgang umwandeln
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. |
Rückgabewert
out
Notes
Die vorangehende Null durch den Konvertierungsspezifikation
#o (resultierend aus der Kombination von std::showbase und std::oct zum Beispiel) erzeugt wird, nicht als Füllzeichen gezählt .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.
Beispiel
Ausgang A Nummer über globale locale
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';
}Output:
2,71Siehe auch
Einsätze formatierte Daten 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. (öffentliche Elementfunktion of std::basic_ostream)
| |